Files
Trancribe/venv/lib/python3.12/site-packages/websockets/__pycache__/protocol.cpython-312.pyc

316 lines
25 KiB
Plaintext
Raw Normal View History

<EFBFBD>
$n!joj<00><01><><00>ddlmZddlZddlZddlZddlmZddlmZm Z m
Z
m Z m Z m Z ddlmZddlmZmZmZmZmZmZmZmZmZmZddlmZmZdd lmZdd
l m!Z!m"Z"m#Z#m$Z$gd <0B>Z%eezezZ& Gd <0C>d ejN<00>Z(e(jRZ)e(jTZ*Gd<0E>dejN<00>Z+e+jXZ,e+jZZ-e+j\Z.e+j^Z/dZ0 Gd<11>d<12>Z1y)<13>)<01> annotationsN)<01> Generator<6F>)<06>ConnectionClosed<65>ConnectionClosedError<6F>ConnectionClosedOK<4F> InvalidState<74> PayloadTooBig<69> ProtocolError)<01> Extension)
<EFBFBD>OK_CLOSE_CODES<45> OP_BINARY<52>OP_CLOSE<53>OP_CONT<4E>OP_PING<4E>OP_PONG<4E>OP_TEXT<58>Close<73> CloseCode<64>Frame)<02>Request<73>Response)<01> StreamReader)<04> BytesLike<6B>
LoggerLike<EFBFBD>Origin<69> Subprotocol)<04>Protocol<6F>Side<64>State<74>SEND_EOFc<01>&<00>eZdZdZed<02>\ZZy)rz6A WebSocket connection is either a server or a client.<2E>N)<07>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>range<67>SERVER<45>CLIENT<4E><00><00>U/home/jean/linux-transcriber/venv/lib/python3.12/site-packages/websockets/protocol.pyrr-s<00><00>@<40><1A>1<EFBFBD>X<EFBFBD>N<EFBFBD>F<EFBFBD>Fr,rc<01>*<00>eZdZdZed<02>\ZZZZy)r z6A WebSocket connection is in one of these four states.<2E>N) r$r%r&r'r(<00>
CONNECTING<EFBFBD>OPEN<45>CLOSING<4E>CLOSEDr+r,r-r r 7s<00><00>@<40>(-<2D>a<EFBFBD><08>%<25>J<EFBFBD><04>g<EFBFBD>vr,r r,c<01>2<00>eZdZdZeddd<04> dd<05>Zedd<06><04>Zejdd<07><04>Zedd<08><04>Z ed d <09><04>Z
ed!d
<EFBFBD><04>Z d"d <0B>Z d#d <0C>Z d$d <0A>Zd%d$d<0E>Zd%d$d<0F>Zd&d'd<10>Zd(d<11>Zd(d<12>Zd)d*d<13>Zd+d<14>Zd,d<15>Zd-d<16>Zd.d<17>Zd.d<18>Zd/d<19>Zd/d<1A>Zd#d<1B>Zy)0ra<>
Sans-I/O implementation of a WebSocket connection.
Args:
side: :attr:`~Side.CLIENT` or :attr:`~Side.SERVER`.
state: Initial state of the WebSocket connection.
max_size: Maximum size of incoming messages in bytes.
:obj:`None` disables the limit. You may pass a ``(max_message_size,
max_fragment_size)`` tuple to set different limits for messages and
fragments when you expect long messages sent in short fragments.
logger: Logger for this connection; depending on ``side``,
defaults to ``logging.getLogger("websockets.client")``
or ``logging.getLogger("websockets.server")``;
see the :doc:`logging guide <../../topics/logging>` for details.
iN)<03>state<74>max_size<7A>loggerc<01><><00>tj<00>|_ |<04>0tjd|j
j <00><00><00><02>}||_ |jtj<00>|_
||_ ||_ t|t<00>s|<03>|dc|_|_n|\|_|_d|_d|_d|_g|_d|_d|_d|_d|_d|_ d|_t7<00>|_g|_g|_|j?<00>|_ tC|j@<00>d|_"y)Nz websockets.F)#<23>uuid<69>uuid4<64>id<69>logging<6E> getLogger<65>name<6D>lowerr7<00> isEnabledFor<6F>DEBUG<55>debug<75>sider5<00>
isinstance<EFBFBD>int<6E>max_message_size<7A>max_fragment_size<7A> current_size<7A>expect_continuation_frame<6D>origin<69>
extensions<EFBFBD> subprotocol<6F>
close_rcvd<EFBFBD>
close_sent<EFBFBD>close_rcvd_then_sent<6E> handshake_exc<78>eof_sentr<00>reader<65>events<74>writes<65>parse<73>parser<65>next<78>
parser_exc)<05>selfrCr5r6r7s r-<00>__init__zProtocol.__init__Ys:<00><00>"<22>Z<EFBFBD>Z<EFBFBD>\<5C><04><07>B<> <12>><3E><1C>&<26>&<26><1B>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>_<EFBFBD>_<EFBFBD>5F<35>4G<34>'H<>I<>F<EFBFBD>"(<28><04> <0B>)<29><1C>(<28>(<28><17><1D><1D>7<><04>
<EFBFBD><19><04> <09><1B><04>
<EFBFBD> <16>h<EFBFBD><03> $<24><08>(8<><D<>d<EFBFBD> 9<>D<EFBFBD> !<21>4<EFBFBD>#9<><D<> 9<>D<EFBFBD> !<21>4<EFBFBD>#9<>)-<2D><04><19>*/<2F><04>&<26>&*<2A><04> <0B>+-<2D><04><0F>/3<><04><18>)-<2D><04><0F>(,<2C><04><0F>15<31><04>!<21>04<30><04><1A> <0C><1E><04> <0A>#<23>n<EFBFBD><04> <0B>#%<25><04> <0B>#%<25><04> <0B><1A>j<EFBFBD>j<EFBFBD>l<EFBFBD><04> <0B> <0C>T<EFBFBD>[<5B>[<5B><19>,0<><04>r,c<01><00>|jS)a<>
State of the WebSocket connection.
Defined in 4.1_, 4.2_, 7.1.3_, and 7.1.4_ of :rfc:`6455`.
.. _4.1: https://datatracker.ietf.org/doc/html/rfc6455#section-4.1
.. _4.2: https://datatracker.ietf.org/doc/html/rfc6455#section-4.2
.. _7.1.3: https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.3
.. _7.1.4: https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4
)<01>_state<74>rYs r-r5zProtocol.state<74>s<00><00><14>{<7B>{<7B>r,c<01>v<00>|jr&|jjd|j<00>||_y)Nz= connection is %s)rBr7r>r\)rYr5s r-r5zProtocol.state<74>s)<00><00> <0F>:<3A>:<3A> <10>K<EFBFBD>K<EFBFBD> <1D> <1D>2<>E<EFBFBD>J<EFBFBD>J<EFBFBD> ?<3F><1B><04> r,c<01><><00>|jtury|j<00>tjS|jj
S)z<>
WebSocket close code received from the remote endpoint.
Defined in 7.1.5_ of :rfc:`6455`.
.. _7.1.5: https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5
:obj:`None` if the connection isn't closed yet.
N)r5r3rMr<00>ABNORMAL_CLOSURE<52>coder]s r-<00>
close_codezProtocol.close_code<64>s9<00><00> <10>:<3A>:<3A>V<EFBFBD> #<23><17> <11>_<EFBFBD>_<EFBFBD> $<24><1C>-<2D>-<2D> -<2D><17>?<3F>?<3F>'<27>'<27> 'r,c<01>n<00>|jtury|j<00>y|jjS)a
WebSocket close reason received from the remote endpoint.
Defined in 7.1.6_ of :rfc:`6455`.
.. _7.1.6: https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6
:obj:`None` if the connection isn't closed yet.
N<>)r5r3rM<00>reasonr]s r-<00> close_reasonzProtocol.close_reason<6F>s0<00><00> <10>:<3A>:<3A>V<EFBFBD> #<23><17> <11>_<EFBFBD>_<EFBFBD> $<24><15><17>?<3F>?<3F>)<29>)<29> )r,c<01>d<00>|jtusJd<01><00>|j<00>K|j<00>?|jjt
vr#|jjt
vrt }nt}||j|j|j<00>}|j|_
|S)a<>
Exception to raise when trying to interact with a closed connection.
Don't raise this exception while the connection :attr:`state`
is :attr:`~websockets.protocol.State.CLOSING`; wait until
it's :attr:`~websockets.protocol.State.CLOSED`.
Indeed, the exception includes the close code and reason, which are
known only once the connection is closed.
Raises:
AssertionError: If the connection isn't closed yet.
zconnection isn't closed yet) r5r3rMrNrar rrrOrX<00> __cause__)rY<00>exc_type<70>excs r-<00> close_exczProtocol.close_exc<78>s<><00><00> <14>z<EFBFBD>z<EFBFBD>V<EFBFBD>#<23>B<>%B<>B<>#<23> <11>O<EFBFBD>O<EFBFBD> '<27><14><0F><0F>+<2B><14><0F><0F>$<24>$<24><0E>6<><14><0F><0F>$<24>$<24><0E>6<>)<29>H<EFBFBD>,<2C>H<EFBFBD> (<28> <10>O<EFBFBD>O<EFBFBD> <10>O<EFBFBD>O<EFBFBD> <10> %<25> %<25>!
<EFBFBD><03> <1D><0F><0F><03> <0A><12>
r,c<01>d<00>|jj|<01>t|j<00>y)aH
Receive data from the network.
After calling this method:
- You must call :meth:`data_to_send` and send this data to the network.
- You should call :meth:`events_received` and process resulting events.
Raises:
EOFError: If :meth:`receive_eof` was called earlier.
N)rR<00> feed_datarWrV<00>rY<00>datas r-<00> receive_datazProtocol.receive_datas"<00><00> <0A> <0B> <0B><1D><1D>d<EFBFBD>#<23> <0C>T<EFBFBD>[<5B>[<5B>r,c<01><><00>|jjry|jj<00>t|j<00>y)a<>
Receive the end of the data stream from the network.
After calling this method:
- You must call :meth:`data_to_send` and send this data to the network;
it will return ``[b""]``, signaling the end of the stream, or ``[]``.
- You aren't expected to call :meth:`events_received`; it won't return
any new events.
:meth:`receive_eof` is idempotent.
N)rR<00>eof<6F>feed_eofrWrVr]s r-<00> receive_eofzProtocol.receive_eofs.<00><00> <10>;<3B>;<3B>?<3F>?<3F> <12> <0C> <0B> <0B><1C><1C><1E> <0C>T<EFBFBD>[<5B>[<5B>r,c<01><00>|js td<01><00>|jtur0t d|j
j j<00><00><00><02><00>| |_|jtt||<02><00>y)a<>
Send a `Continuation frame`_.
.. _Continuation frame:
https://datatracker.ietf.org/doc/html/rfc6455#section-5.6
Parameters:
data: payload containing the same kind of data
as the initial frame.
fin: FIN bit; set it to :obj:`True` if this is the last frame
of a fragmented message and to :obj:`False` otherwise.
Raises:
ProtocolError: If a fragmented message isn't in progress.
<20>unexpected continuation frame<6D>connection is N) rIr r\r1r r5r>r?<00>
send_framerr<00>rYro<00>fins r-<00>send_continuationzProtocol.send_continuation&sh<00><00>"<14>-<2D>-<2D><1F> ?<3F>@<40> @<40> <0F>;<3B>;<3B>d<EFBFBD> "<22><1E><1E><04>
<EFBFBD>
<EFBFBD><0F><0F>0E<30>0E<30>0G<30>/H<>I<>J<> J<>-0<><17><04>&<26> <0C><0F><0F><05>g<EFBFBD>t<EFBFBD>S<EFBFBD>1<>2r,c<01><00>|jr td<01><00>|jtur0t d|j
j j<00><00><00><02><00>| |_|jtt||<02><00>y)a<>
Send a `Text frame`_.
.. _Text frame:
https://datatracker.ietf.org/doc/html/rfc6455#section-5.6
Parameters:
data: payload containing text encoded with UTF-8.
fin: FIN bit; set it to :obj:`False` if this is the first frame of
a fragmented message.
Raises:
ProtocolError: If a fragmented message is in progress.
<20>expected a continuation framerwN) rIr r\r1r r5r>r?rxrrrys r-<00> send_textzProtocol.send_text>sh<00><00> <10> )<29> )<29><1F> ?<3F>@<40> @<40> <0F>;<3B>;<3B>d<EFBFBD> "<22><1E><1E><04>
<EFBFBD>
<EFBFBD><0F><0F>0E<30>0E<30>0G<30>/H<>I<>J<> J<>-0<><17><04>&<26> <0C><0F><0F><05>g<EFBFBD>t<EFBFBD>S<EFBFBD>1<>2r,c<01><00>|jr td<01><00>|jtur0t d|j
j j<00><00><00><02><00>| |_|jtt||<02><00>y)a<>
Send a `Binary frame`_.
.. _Binary frame:
https://datatracker.ietf.org/doc/html/rfc6455#section-5.6
Parameters:
data: payload containing arbitrary binary data.
fin: FIN bit; set it to :obj:`False` if this is the first frame of
a fragmented message.
Raises:
ProtocolError: If a fragmented message is in progress.
r}rwN) rIr r\r1r r5r>r?rxrrrys r-<00> send_binaryzProtocol.send_binaryUsh<00><00> <10> )<29> )<29><1F> ?<3F>@<40> @<40> <0F>;<3B>;<3B>d<EFBFBD> "<22><1E><1E><04>
<EFBFBD>
<EFBFBD><0F><0F>0E<30>0E<30>0G<30>/H<>I<>J<> J<>-0<><17><04>&<26> <0C><0F><0F><05>i<EFBFBD><14>s<EFBFBD>3<>4r,c<01><><00>|jtur0td|jjj <00><00><00><02><00>|<01>-|dk7r t d<04><00>ttjd<03>}d}nt||<02>}|j<00>}|jtt|<04><00>|j<00>J<00>||_t |_y)a_
Send a `Close frame`_.
.. _Close frame:
https://datatracker.ietf.org/doc/html/rfc6455#section-5.5.1
Parameters:
code: close code.
reason: close reason.
Raises:
ProtocolError: If the code isn't valid or if a reason is provided
without a code.
rwNrdz#cannot send a reason without a coder,)r\r1r r5r>r?r rr<00>NO_STATUS_RCVD<56> serializerxrrrMrNr2<00>rYrare<00>closeros r-<00>
send_closezProtocol.send_closels<><00><00>$ <10>;<3B>;<3B>d<EFBFBD> "<22><1E><1E><04>
<EFBFBD>
<EFBFBD><0F><0F>0E<30>0E<30>0G<30>/H<>I<>J<> J<> <0F><<3C><15><12>|<7C>#<23>$I<>J<>J<><19>)<29>2<>2<>B<EFBFBD>7<>E<EFBFBD><16>D<EFBFBD><19>$<24><06>'<27>E<EFBFBD><18>?<3F>?<3F>$<24>D<EFBFBD> <0C><0F><0F><05>h<EFBFBD><04>-<2D>.<2E><14><EFBFBD><EFBFBD>&<26>&<26>&<26><1F><04><0F><1C><04>
r,c<01><><00>|jturB|jtur0td|jj
j <00><00><00><02><00>|jtt|<01><00>y)z<>
Send a `Ping frame`_.
.. _Ping frame:
https://datatracker.ietf.org/doc/html/rfc6455#section-5.5.2
Parameters:
data: payload containing arbitrary binary data.
rwN)
r\r1r2r r5r>r?rxrrrns r-<00> send_pingzProtocol.send_ping<6E><00>R<00><00> <10>;<3B>;<3B>d<EFBFBD> "<22>t<EFBFBD>{<7B>{<7B>'<27>'A<><1E><1E><04>
<EFBFBD>
<EFBFBD><0F><0F>0E<30>0E<30>0G<30>/H<>I<>J<> J<> <0C><0F><0F><05>g<EFBFBD>t<EFBFBD>,<2C>-r,c<01><><00>|jturB|jtur0td|jj
j <00><00><00><02><00>|jtt|<01><00>y)z<>
Send a `Pong frame`_.
.. _Pong frame:
https://datatracker.ietf.org/doc/html/rfc6455#section-5.5.3
Parameters:
data: payload containing arbitrary binary data.
rwN)
r\r1r2r r5r>r?rxrrrns r-<00> send_pongzProtocol.send_pong<6E>r<>r,c<01><><00>|jturs|tjk7r`t ||<02>}|j <00>}|j tt|<04><00>||_ |j<00>d|_ t|_|jtur|js|j!<00>|j#<00>|_t'|j$<00>y)a?
`Fail the WebSocket connection`_.
.. _Fail the WebSocket connection:
https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.7
Parameters:
code: close code
reason: close reason
Raises:
ProtocolError: If the code isn't valid.
NT)r5r1rr`rr<>rxrrrNrMrOr2rCr)rQ<00>send_eof<6F>discardrVrWr<>s r-<00>failz Protocol.fail<69>s<><00><00>& <10>:<3A>:<3A><14> <1D><13>y<EFBFBD>1<>1<>1<><1D>d<EFBFBD>F<EFBFBD>+<2B><05><1C><EFBFBD><EFBFBD>(<28><04><14><0F><0F><05>h<EFBFBD><04> 5<>6<>"'<27><04><0F>
<18>?<3F>?<3F>.<2E>04<30>D<EFBFBD>-<2D>$<24><04>
<EFBFBD> <10>9<EFBFBD>9<EFBFBD><06> <1E>t<EFBFBD>}<7D>}<7D> <10>M<EFBFBD>M<EFBFBD>O<EFBFBD> <1B>l<EFBFBD>l<EFBFBD>n<EFBFBD><04> <0B> <0C>T<EFBFBD>[<5B>[<5B>r,c<01>.<00>|jgc}|_|S)a*
Fetch events generated from data received from the network.
Call this method immediately after any of the ``receive_*()`` methods.
Process resulting events, likely by passing them to the application.
Returns:
Events read from the connection.
)rS)rYrSs r-<00>events_receivedzProtocol.events_received<65>s<00><00>#<23>k<EFBFBD>k<EFBFBD>2<EFBFBD><1B><06><04> <0B><15> r,c<01>.<00>|jgc}|_|S)a<>
Obtain data to send to the network.
Call this method immediately after any of the ``receive_*()``,
``send_*()``, or :meth:`fail` methods.
Write resulting data to the connection.
The empty bytestring :data:`~websockets.protocol.SEND_EOF` signals
the end of the data stream. When you receive it, half-close the TCP
connection.
Returns:
Data to write to the connection.
)rT)rYrTs r-<00> data_to_sendzProtocol.data_to_send<6E>s<00><00>"#<23>k<EFBFBD>k<EFBFBD>2<EFBFBD><1B><06><04> <0B><15> r,c<01><><00>|jtury|jtury|jtury|jtusJ<00>|j
S)a<>
Tell if the TCP connection is expected to close soon.
Call this method immediately after any of the ``receive_*()``,
``send_close()``, or :meth:`fail` methods.
If it returns :obj:`True`, schedule closing the TCP connection after a
short timeout if the other side hasn't already closed it.
Returns:
Whether the TCP connection is expected to close soon.
FT)r5r1r2r3r0rQr]s r-<00>close_expectedzProtocol.close_expectedsN<00><00>D <10>:<3A>:<3A><14> <1D><18> <0F>:<3A>:<3A><17> <20><17> <0F>:<3A>:<3A><16> <1F><18><13>z<EFBFBD>z<EFBFBD>Z<EFBFBD>'<27>'<27>'<27><13>}<7D>}<7D>r,c#<01><>K<00> |jj<00>Ed{<00><03><02>r2|jr|jjd<03>t d<04><00>d}|j
<00>2|j <00> |j
}n|j
|j z
}|j<00>%|<01> |j}nt||j<00>}tj|jj|jtu||j<00><05>Ed{<00><03><02>}|jr|jjd|<02>|j|<02><00><01>O7<00><01>27<00>B#t $r;}|j#t$j&t)|<03><00>||_Yd}~<03>nKd}~wt$r;}|j#t$j,t)|<03><00>||_Yd}~<03>n d}~wt.$rJ}|j#t$j0|j2<00>d|j4<00><00><03>||_Yd}~n<>d}~wt6$rU}|j9|j <00>|j#t$j:t)|<03><00>||_Yd}~n\d}~wt<$rM}|jj?dd<01> <09>|j#t$j@<00>||_Yd}~nd}~wwxYwd<02><01>tCd
<EFBFBD><00><01>w) a-
Parse incoming data into frames.
:meth:`receive_data` and :meth:`receive_eof` run this generator
coroutine until it needs more data or reaches EOF.
:meth:`parse` never raises an exception. Instead, it sets the
:attr:`parser_exc` and yields control.
TN<54>< EOFzunexpected end of stream)<03>maskr6rKz< %sz at position z parser failed)<01>exc_infoz"parse() shouldn't step after error)"rR<00>at_eofrBr7<00>EOFErrorrFrHrG<00>minrrU<00>
read_exactrCr)rK<00>
recv_framer r<>r<00>PROTOCOL_ERROR<4F>strrXr`<00>UnicodeDecodeError<6F> INVALID_DATAre<00>startr
<00>set_current_size<7A>MESSAGE_TOO_BIG<49> Exception<6F>error<6F>INTERNAL_ERROR<4F>AssertionError)rYr6<00>framerjs r-rUzProtocol.parse2sH<00><00><><00>= "<22><16>#<23>{<7B>{<7B>1<>1<>3<>3<>3<><1B>z<EFBFBD>z<EFBFBD><1C> <0B> <0B>)<29>)<29>'<27>2<>
#<23>#=<3D>><3E>><3E><1F><08><17>(<28>(<28>4<><1B>(<28>(<28>0<>#'<27>#8<>#8<><08>#'<27>#8<>#8<>4<EFBFBD>;L<>;L<>#L<><08><17>)<29>)<29>5<><1F>'<27>#'<27>#9<>#9<><08>#&<26>x<EFBFBD><14>1G<31>1G<31>#H<><08>
$)<29>;<3B>;<3B><18>K<EFBFBD>K<EFBFBD>*<2A>*<2A><1D><19><19>f<EFBFBD>,<2C>%<25>#<23><EFBFBD><EFBFBD> $<12><12><05><18>:<3A>:<3A><18>K<EFBFBD>K<EFBFBD>%<25>%<25>f<EFBFBD>e<EFBFBD>4<><14><0F><0F><05>&<26>K<17>3<><33>4<12><><1D> "<22> <10>I<EFBFBD>I<EFBFBD>i<EFBFBD>.<2E>.<2E><03>C<EFBFBD><08> 9<>!<21>D<EFBFBD>O<EFBFBD>O<EFBFBD><4F><17> "<22> <10>I<EFBFBD>I<EFBFBD>i<EFBFBD>0<>0<>#<23>c<EFBFBD>(<28> ;<3B>!<21>D<EFBFBD>O<EFBFBD>O<EFBFBD><4F>!<21> "<22> <10>I<EFBFBD>I<EFBFBD>i<EFBFBD>,<2C>,<2C><13><1A><1A> <0C>M<EFBFBD>#<23>)<29>)<29><1B>.U<> V<>!<21>D<EFBFBD>O<EFBFBD>O<EFBFBD><4F><1C> "<22> <0F> <20> <20><14>!2<>!2<> 3<> <10>I<EFBFBD>I<EFBFBD>i<EFBFBD>/<2F>/<2F><13>S<EFBFBD><18> :<3A>!<21>D<EFBFBD>O<EFBFBD>O<EFBFBD><4F><18> "<22> <10>K<EFBFBD>K<EFBFBD> <1D> <1D>o<EFBFBD><04> <1D> =<3D> <10>I<EFBFBD>I<EFBFBD>i<EFBFBD>.<2E>.<2E> /<2F>!<21>D<EFBFBD>O<EFBFBD>O<EFBFBD><4F>  "<22><> <0E><1C>A<>B<>B<>s<EFBFBD><00>K2<01>E<00>E<04>C1E<00>E<04>AE<00>E<00> K <03>"0F<03>K2<01> K <03>$0G<03>K2<01> K <03>&AH+<03>&K2<01>+ K <03>7A J<03>K2<01> K <03>AK<03>K2<01>K <03> K2c#<01>$K<00>|jtuxs|jtu|jk(sJ<00>|j
j <00>Ed{<00><02><02>s=|j
j<00>|j
j <00>Ed{<00><02><02>s<01>=|jr|jjd<02>|jtur"|jtur|j<00>t|_d<01><01>td<03><00>7<00><>7<00>|<7C>w)z<>
Discard incoming data.
This coroutine replaces :meth:`parse`:
- after receiving a close frame, during a normal closure (1.4);
- after sending a close frame, during an abnormal closure (7.1.7).
Nr<4E>z"discard() shouldn't step after EOF)rCr)r5r0rQrRr<>r<>rBr7r*r<>r3r<>r]s r-r<>zProtocol.discard<72>s<><00><00><><00><15> <09> <09>V<EFBFBD>#<23>?<3F>t<EFBFBD>z<EFBFBD>z<EFBFBD>Z<EFBFBD>'?<3F>T<EFBFBD>]<5D>]<5D>S<>S<>S<>"<22>k<EFBFBD>k<EFBFBD>0<>0<>2<>2<>2<> <10>K<EFBFBD>K<EFBFBD> <1F> <1F> !<21>#<23>k<EFBFBD>k<EFBFBD>0<>0<>2<>2<>2<> <0F>:<3A>:<3A> <10>K<EFBFBD>K<EFBFBD> <1D> <1D>g<EFBFBD> &<26> <10>9<EFBFBD>9<EFBFBD><06> <1E>4<EFBFBD>:<3A>:<3A>Z<EFBFBD>#?<3F> <10>M<EFBFBD>M<EFBFBD>O<EFBFBD><1B><04>
<EFBFBD> <0A><1D>A<>B<>B<>3<><33>2<>s+<00>AD<01>D <04>;D<01>D<04>D<01>A6D<01>Dc<01><><00>|jtus|jtur@|j<00> t d<02><00>|j
<00>st |j<00>|_<00>n<>|jturV|j<00> t d<03><00>|j
r d|_<00>n<>|xjt |j<00>z c_<00>n<>|jtur-tt|j<00>}|j|<02><00>nM|jtur<02>n9|jtu<00>r tj|j<00>|_|j"t$ur|j&<00>J<00>d|_|j<00> t d<05><00>|j"t*urL|jtt|j<00><00>|j |_d|_t$|_|j,t.ur|j1<00>|j3<00>|_t7|j4<00>nt9d|jd<08><04><02><00>|j:j=|<01>y) z-
Process an incoming frame.
Nr}rvFzincomplete fragmented messageTzunexpected opcode: <20>02x)<1F>opcoderrrHr rz<00>lenrorrrrrxrrrUrMr5r2rNrOr1rCr)r<>r<>rVrWr<>rS<00>append)rYr<><00>
pong_frames r-r<>zProtocol.recv_frame<6D>s<><00><00>
<11><<3C><<3C>7<EFBFBD> "<22>e<EFBFBD>l<EFBFBD>l<EFBFBD>i<EFBFBD>&?<3F><13> <20> <20>,<2C>#<23>$C<>D<>D<><18>9<EFBFBD>9<EFBFBD>$'<27><05>
<EFBFBD>
<EFBFBD>O<EFBFBD><04>!<21> <12>\<5C>\<5C>W<EFBFBD> $<24><13> <20> <20>(<28>#<23>$C<>D<>D<><14>y<EFBFBD>y<EFBFBD>$(<28><04>!<21><14>!<21>!<21>S<EFBFBD><15><1A><1A>_<EFBFBD>4<>!<21> <12>\<5C>\<5C>W<EFBFBD> $<24><1F>w<EFBFBD><05>
<EFBFBD>
<EFBFBD>3<>J<EFBFBD> <10>O<EFBFBD>O<EFBFBD>J<EFBFBD> '<27> <12>\<5C>\<5C>W<EFBFBD> $<24> <11> <12>\<5C>\<5C>X<EFBFBD> %<25>$<24>k<EFBFBD>k<EFBFBD>%<25>*<2A>*<2A>5<>D<EFBFBD>O<EFBFBD><13>z<EFBFBD>z<EFBFBD>W<EFBFBD>$<24><1B><EFBFBD><EFBFBD>2<>2<>2<>,1<><04>)<29><13> <20> <20>,<2C>#<23>$C<>D<>D<><14>z<EFBFBD>z<EFBFBD>T<EFBFBD>!<21>
<15><0F><0F><05>h<EFBFBD><05>
<EFBFBD>
<EFBFBD> ;<3B><<3C>"&<26>/<2F>/<2F><04><0F>,0<><04>)<29>$<24><04>
<EFBFBD><14>y<EFBFBD>y<EFBFBD>F<EFBFBD>"<22><14> <0A> <0A><0F><1F>,<2C>,<2C>.<2E>D<EFBFBD>K<EFBFBD> <10><14><1B><1B> <1D>!<21>#6<>u<EFBFBD>|<7C>|<7C>C<EFBFBD>6H<36>!I<>J<> J<> <0C> <0B> <0B><1A><1A>5<EFBFBD>!r,c<01><><00>|jr|jjd|<01>|jj|j |j
t u|j<00><02><00>y)Nz> %s)r<>rK)rBr7rTr<>r<>rCr*rK)rYr<>s r-rxzProtocol.send_frame<6D>sS<00><00> <0F>:<3A>:<3A> <10>K<EFBFBD>K<EFBFBD> <1D> <1D>f<EFBFBD>e<EFBFBD> ,<2C> <0C> <0B> <0B><1A><1A> <11>O<EFBFBD>O<EFBFBD><19>Y<EFBFBD>Y<EFBFBD>&<26>(<28><1F>?<3F>?<3F> <1C> <0E>
r,c<01><><00>|jrJ<00>d|_|jr|jjd<02>|jj t
<00>y)NTz> EOF)rQrBr7rTr<>r!r]s r-r<>zProtocol.send_eof<6F>sA<00><00><17>=<3D>=<3D> <20> <20><1C><04> <0A> <0F>:<3A>:<3A> <10>K<EFBFBD>K<EFBFBD> <1D> <1D>g<EFBFBD> &<26> <0C> <0B> <0B><1A><1A>8<EFBFBD>$r,)
rCrr5r r6z*tuple[int | None, int | None] | int | Noner7zLoggerLike | None<6E>return<72>None)r<>r )r5r r<>r<>)r<>z
int | None)r<>z
str | None)r<>r)rozbytes | bytearrayr<79>r<>)r<>r<>)rorrz<00>boolr<6C>r<>)T)Nrd)razCloseCode | int | Nonerer<>r<>r<>)rorr<>r<>)rd)razCloseCode | intrer<>r<>r<>)r<>z list[Event])r<>z list[bytes])r<>r<>)r<>zGenerator[None])r<>rr<>r<>)r$r%r&r'r1rZ<00>propertyr5<00>setterrbrfrkrprtr{r~r<>r<>r<>r<>r<>r<>r<>r<>rUr<>r<>rxr<>r+r,r-rrGs<00><00><08>*<1C>?D<>$(<28> E1<><12>E1<><15> E1<>
=<3D> E1<> "<22> E1<>
<0E>E1<>N<0E> <1B><0E> <1B> <0B>\<5C>\<5C><1C><12><1C>
<0E>(<28><0E>(<28>$<0E>*<2A><0E>*<2A>$<0E>!<13><0E>!<13>J<1A> <1A>*3<>03<>.5<>."<1D>H.<2E> .<2E> -<1A>b <16> <16>()<1D>ZMC<01>^C<01><N"<22>d
<EFBFBD>%r,r)2<>
__future__r<00>enumr<r9<00>collections.abcr<00>
exceptionsrrrr r
r rKr <00>framesr rrrrrrrrr<00>http11rr<00>streamsr<00>typingrrrr<00>__all__<5F>Event<6E>IntEnumrr)r*r r0r1r2r3r!rr+r,r-<00><module>r<>s<><00><01>"<22> <0B><0E> <0B>%<25><02><02>"<22> <02> <02> <02>&<26>!<21>><3E>><3E> <02><07> <10>(<28><1A>U<EFBFBD>"<22><05>?<3F><1E>4<EFBFBD><<3C><<3C><1E>
<0E><1B><1B><06> <0A><1B><1B><06>1<>D<EFBFBD>L<EFBFBD>L<EFBFBD>1<> <13> <1D> <1D>
<EFBFBD> <0C>z<EFBFBD>z<EFBFBD><04>
<0F>-<2D>-<2D><07> <0E><1C><1C><06> <0F><08>E<>y
%<25>y
%r,