Xj ddlZddlZddlmZddlmZmZddlmZm Z m Z m Z m Z dZ GddZGdd ZGd d eZd e d efdZy)N)NoReturn)HeadersMutableHeaders)ASGIAppMessageReceiveScopeSend)ztext/event-streamc >eZdZd dedededdfdZdeded eddfd Z y) GZipMiddlewareapp minimum_size compresslevelreturnNc.||_||_||_yN)r rr)selfr rrs m/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/starlette/middleware/gzip.py__init__zGZipMiddleware.__init__ s(*scopereceivesendcZK|ddk7r|j|||d{yt|}d|jddvr-t|j|j|j }n t |j|j}||||d{y77w)Ntypehttp)rgzipAccept-Encoding)r)r rget GZipResponderrrIdentityResponder)rrrrheaders responders r__call__zGZipMiddleware.__call__s =F "((5'40 0 0 & W[[!2B7 7%dhh0A0AQUQcQcdI)$((D4E4EFIw--- 1 .s"B+B'A?B+!B)"B+)B+)i ) __name__ __module__ __qualname__rintrr rr r%rrr r sE+G+3+S+Y]+ .E .G .4 .D .rr cheZdZUeed<dededdfdZdede d e ddfd Z d e ddfd Z d ededefdZy)r"content_encodingr rrNcn||_||_t|_i|_d|_d|_d|_y)NF)r runattached_sendrinitial_messagestartedcontent_encoding_setcontent_type_is_excluded)rr rs rrzIdentityResponder.__init__#s7() (* $)!(-%rrrrchK||_|j|||jd{y7wr)rr send_with_compression)rrrrs rr%zIdentityResponder.__call__,s) hhugt'A'ABBBs (202messagecK|d}|dk(rT||_t|jd}d|v|_|jddj t |_y|dk(rh|js |j rP|js*d |_|j|jd{|j|d{y|dk(r|jsd |_|jd d }|jd d }t||jkr?|s=|j|jd{|j|d{y|s|j|d }t|jd}|jd||d k7r+|j|d<tt||d<||d <|j|jd{|j|d{y|j|d }t|jd}|jd||d k7r|j|d<|d=||d <|j|jd{|j|d{y|dk(rT|jd d }|jd d }|j|||d <|j|d{y|dk(r=|j|jd{|j|d{yy777 77`7J777^777 w)Nrzhttp.response.startr#)rawzcontent-encodingz content-typerzhttp.response.bodyTbodyr more_bodyF)r:rzContent-EncodingzContent-Lengthzhttp.response.pathsend)r0rr2r startswithDEFAULT_EXCLUDED_CONTENT_TYPESr3r1rlenrapply_compressionradd_vary_headerr-str)rr6 message_typer#r9r:s rr5z'IdentityResponder.send_with_compression0s v 0 0$+D $"6"6y"ABG(:g(ED %,3KK,K,V,VWu,vD ) 1 1t7P7PTXTqTq<<# ii 4 4555))G$ $ $ 1 1$,,DL;;vs+D K7I4y4,,,Yii 4 4555ii(((--de-D(T-A-A)-LM''(9:76?*262G2GG./03CIG,-&*GFOii 4 4555ii(((--dd-C(T-A-A)-LM''(9:76?*262G2GG./ 01&*GFOii 4 4555ii((( 1 1;;vs+D K7I"44TY4OGFO))G$ $ $ 5 5))D001 1 1))G$ $ $6Y6 $6(6(6( % 2 $sB-M#/M0M#M  A;M#M M#MBM#3M4M# M A?M# M M#%M&AM#>M?(M#'M(M#M!M# M# M#M#M#M#M#M#M#M#!M#r9r:c|S)zApply compression on the response body. If more_body is False, any compression file should be closed. If it isn't, it won't be closed automatically until all background tasks complete. r+rr9r:s rr>z#IdentityResponder.apply_compressionms  r)r'r(r)r@__annotations__rr*rr rr r%rr5bytesboolr>r+rrr"r" sv.G.3.4.CECGC4CDC;%7;%t;%ze4Err"c feZdZdZddedededdffd Zded ed e ddffd Z d e d e de fdZ xZS)r!rr rrrNct|||tj|_t j d|j||_y)Nwb)modefileobjr)superrioBytesIO gzip_bufferrGzipFile gzip_file)rr rr __class__s rrzGZipResponder.__init__zs; l+::<D$:J:JZghrrrrcK|j5|j5t| |||d{ddddddy7#1swYxYw#1swYyxYwwr)rOrQrLr%)rrrrrRs rr%zGZipResponder.__call__s_    9t~~ 9'"5'48 8 8 9 9 9 8 9 9 9 9sA A" AA AA A A"A  A AAA"r9r:c|jj||s|jj|jj }|jj d|jj |S)Nr)rQwritecloserOgetvalueseektruncaterCs rr>zGZipResponder.apply_compressionsf T" NN "((* a  !!# r)r&)r'r(r)r-rr*rr rr r%rErFr> __classcell__)rRs@rr!r!wskiGi3isiSWi 9E9G949D9 e 4 E rr!r6rc Ktdw)Nzsend awaitable not set) RuntimeError)r6s rr/r/s / 00s )rrMtypingrstarlette.datastructuresrrstarlette.typesrrrr r r<r r"r!r/r+rrr`sT <BB!7..*TTn%2171x1r