K iodfddlmZddlZddlmZddlmZmZddlm Z ddl m Z m Z m Z mZmZmZddlmZmZd d lmZmZmZgd Zd Zed dDcgc] }e| c}ZGddeZ ddZ ddZGddeZ ddZ GddeZ! ddZ"ycc}w)) annotationsN)Sequence)AnyLiteral)frames)DuplicateParameterInvalidParameterNameInvalidParameterValueNegotiationError PayloadTooBig ProtocolError) ExtensionNameExtensionParameter)ClientExtensionFactory ExtensionServerExtensionFactory)PerMessageDeflateClientPerMessageDeflateFactory enable_client_permessage_deflateServerPerMessageDeflateFactory enable_server_permessage_deflatescjeZdZdZedZ d d dZd dZdd d dZd dZ y)rz) Per-Message Deflate extension. permessage-deflateNc|i}|dvsJ|dvsJd|cxkrdksJJd|cxkrdksJJd|vsJ||_||_||_||_||_|js&t j |j |_|js1t jdd|j i|j|_ d|_ y) z? Configure the Per-Message Deflate extension. N)FTrwbitsr F) remote_no_context_takeoverlocal_no_context_takeoverremote_max_window_bitslocal_max_window_bitscompress_settingszlib decompressobjdecoder compressobjencoderdecode_cont_data)selfr#r$r%r&r's n/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/websockets/extensions/permessage_deflate.py__init__zPerMessageDeflate.__init__)s  $ " )]:::(M999*0b00000)/R/////////*D')B&&<#%:"!2..--T5P5P4PQDL--++111((DL!&c pd|jd|jd|jd|jd S)Nz-PerMessageDeflate(remote_no_context_takeover=z, local_no_context_takeover=z, remote_max_window_bits=z, local_max_window_bits=))r#r$r%r&r.s r/__repr__zPerMessageDeflate.__repr__SsV**.*I*I)JK))-)G)G(HI&&*&A&A%BC%%)%?%?$@  C r1)max_sizec|jtjvr|S|jtjur"|js|S|j r[d|_nS|j s|S|j sd|_|jr&tj|j |_ |j r5t|jdkrt|jtz}n |j}|dn|} |jj!||}|jj"r|Jt%d||j r7t|jdk\r|jj!t|j r|jr|` tj*|j||j d|j,|j.S#tj&$r}t)d|d}~wwxYw)z, Decode an incoming frame. FTr!iNrzdecompression failed)opcoder CTRL_OPCODESOP_CONTr-finrsv1r#r(r)r%r*lendatabytes_EMPTY_UNCOMPRESSED_BLOCK decompressunconsumed_tailr errorrFramersv2rsv3)r.framer6r> max_lengthexcs r/decodezPerMessageDeflate.decode\s <<6.. .L <<6>> )(( yy(-%:: 99(,%..#119T9T8TU 99UZZ4/$'@@D::D"*Q  A<<**4flush Z_SYNC_FLUSHr;r@r= memoryviewrDrErF)r.rGr>s r/encodezPerMessageDeflate.encodes7 <<6.. .L <zIClientPerMessageDeflateFactory.process_response_params..yH5uzzTYY&H#&zreceived duplicate Friz#expected server_no_context_takeoverTzexpected server_max_window_bitsz"unsupported server_max_window_bitsz!unexpected client_max_window_bitsz"unsupported client_max_window_bitsr) anyr r^rkr`rarbrcrr'r.reaccepted_extensionsr`rarbrcs` r/process_response_paramsz6ClientPerMessageDeflateFactory.process_response_paramsns@ H4GH H"%8 #DE E % 8  & & " "  * *-&'LMM  * *--1*  & & . &-&'HII'$*E*EE&'KLL  & & .%1&'JKK  ( (D 0 &-)-)D)D&'$*E*EE&'KLL & & " (b " (b  " "   r1)FFNTN) r`rSrarSrbrYrcint | Literal[True] | Noner'dict[str, Any] | NonerUrV)rUSequence[ExtensionParameter])rerrSequence[Extension]rUr) rZr[r\r]rr^r0rsrr"r1r/rr(s. - .D,1+0-1=A37 3$(3%)3!+ 3 !; 3 1 3 3@  g ,g 1g   g r1rch|g}td|Dst|tddigz}|S)z Enable Per-Message Deflate with default settings in client extensions. If the extension is already present, perhaps with non-default settings, the configuration isn't changed. c3VK|]!}|jtjk(#ywrR)r^r)rxextension_factorys r/rzz3enable_client_permessage_deflate..s*  "@"E"EE')memLevel)r')r~listr extensionss r/rrsQ !+ *% *#-q/ )  r1cdeZdZdZedZ d ddZ ddZy) ra Server-side extension factory for the Per-Message Deflate extension. Parameters behave as described in `section 7.1 of RFC 7692`_. .. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1 Set them to :obj:`True` to include them in the negotiation offer without a value or to an integer value to include them with this value. Args: server_no_context_takeover: Prevent server from using context takeover. client_no_context_takeover: Prevent client from using context takeover. server_max_window_bits: Maximum size of the server's LZ77 sliding window in bits, between 8 and 15. client_max_window_bits: Maximum size of the client's LZ77 sliding window in bits, between 8 and 15. compress_settings: Additional keyword arguments for :func:`zlib.compressobj`, excluding ``wbits``. require_client_max_window_bits: Do not enable compression at all if client doesn't advertise support for ``client_max_window_bits``; the default behavior is to enable compression without enforcing ``client_max_window_bits``. rNc(|"d|cxkrdkstdtd|"d|cxkrdkstdtd|d|vr td| |r td||_||_||_||_||_||_y) rnNrrrorpr zLcompress_settings must not include wbits, set server_max_window_bits insteadzVrequire_client_max_window_bits is enabled, but client_max_window_bits isn't configured)rqr`rarbrcr'require_client_max_window_bits)r.r`rarbrcr'rs r/r0z'ServerPerMessageDeflateFactory.__init__ s'.!7M2SQS2SNO O3TNO O&.!7M2SQS2SNO O3TNO O  (W8I-I5  " ).L>  +E'*D'&<#&<#!2.L+r1cPtfd|Drtdjt|d\}}}}jr|sd}j r|sd}j n*| j }n|j kDr j }j|durRj}nE|jr7td|dur j}nj|kr j}t||||t|||xsd|xsdjfS)zi Process request parameters. Return response params and an extension instance. c3PK|]}|jjk(ywrRrvrws r/rzzHServerPerMessageDeflateFactory.process_request_params..;r{r|zskipped duplicate Tr}zrequired client_max_window_bitsr) r~r r^rkr`rarbrcrrfrr'rs` r/process_request_paramsz5ServerPerMessageDeflateFactory.process_request_params0sf H4GH H"%7 {#CD D $ 7  & & " ""  * *--1*  * *--1*  & & . &-)-)D)D&'$*E*EE)-)D)D&  & & .%-)-)D)D&&-66*+LMM'4/)-)D)D&,,/EE)-)D)D& **&&   **&,"&,"&&    r1)FFNNNF)r`rSrarSrbrYrcrYr'rrrSrUrV)rerrrrUz2tuple[list[ExtensionParameter], PerMessageDeflate])rZr[r\r]rr^r0rr"r1r/rrs4 - .D,1+0-1-137/4!M$(!M%)!M!+ !M !+ !M 1 !M)-!M !MFo ,o 1o  < o r1rcl|g}td|Dst|tddddigz}|S)z Enable Per-Message Deflate with default settings in server extensions. If the extension is already present, perhaps with non-default settings, the configuration isn't changed. c3VK|]!}|jtjk(#ywrR)r^r)rx ext_factorys r/rzz3enable_server_permessage_deflate..s*  :???r rr)rbrcr')r~rrrs r/rrsW % *% *')')#-q/ )   r1) r`rSrarSrbrYrcrrUzlist[ExtensionParameter])rerrirSrUz9tuple[bool, bool, int | None, int | Literal[True] | None])rz'Sequence[ClientExtensionFactory] | NonerUz Sequence[ClientExtensionFactory])rz'Sequence[ServerExtensionFactory] | NonerUz Sequence[ServerExtensionFactory])# __future__rr(collections.abcrtypingrrr exceptionsr r r r r rrrbaserrr__all__r@rangerWrhrrfrkrrrr)bitss0r/rs" $7KK 016q">3t9>o o d $ $'7   0: (:8<:>:zm %;m `7%0o %;o d7%I?sB.