Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
frame.cpython-313.pyc300 linesDownload Raw Back to __pycache__
1�

2��j�{��H�%SrSSKJr SSKrSSKrSSKJrJr \(aSSKJ	r	 SSK3JrJrJ
r
Jr SSKJrJr S	rS4rSrSrS
r\R."S5r\R."S5r\R."S5r\R."S5r\R."S5r\R."S5r\R."S5r"SS5r"SS5r "SS5r!"SS\ \5r""SS\!\5r#"SS \5r$"S!S"\5r%"S#S$\ \5r&"S%S&\5r'"S'S(\5r("S)S*\5r)"S+S,\ \!\5r*"S-S.\5r+"S/S0\5r,"S1S2\5r-S6S3jr.\"\*\#\$\%\&\'\(\)\+\,/r/S4\0S5'\/Vs0sHoRbU_M snr2gs snf)7z�5Framing logic for HTTP/2.6 7Provides both classes to represent framed8data and logic for aiding the connection when it comes to reading from the9socket.10�)�annotationsN)�
TYPE_CHECKING�Any)�Iterable�)�InvalidDataError�InvalidFrameError�InvalidPaddingError�UnknownFrameError)�Flag�Flagsi@i���z11has-streamz	no-stream�eitherz>HBBBLz>LLz>HLz>LBz>Lz>Hz>Bc��\rSrSr%Sr/rS\S'SrS\S'SrS\S	'SSS12jjr	SSjr13SSjr\SS
j5r
\SSSjj5rSSjrSSjrSSjrSSjrSrg)�Frame�*z'14The base class for all HTTP/2 frames.15�16list[Flag]�
defined_flagsNz17int | None�typez18str | None�stream_associationc���Xl[UR5UlSUlUHnURRU5 M  UR(d7UR[:Xa#S[U5R3n[U5eUR(aEUR[:Xa0S[U5RSUR3n[U5egg)NrzStream ID must be non-zero for zStream ID must be zero for z with stream_id=)�	stream_idr
r�flags�body_len�addr�_STREAM_ASSOC_HAS_STREAMr�__name__r�_STREAM_ASSOC_NO_STREAM)�selfrr�flag�msgs     �VD:\code\apps\devtools\python\user_packages\Python313\site-packages\hyperframe/frame.py�__init__�Frame.__init__9s���#���4�-�-�.��19���
��D��J�J�N�N�4� ���~�~�$�"9�"9�=U�"U�3�D��J�4G�4G�3H�I�C�"�3�'�'��>�>�d�5�5�9P�P�/��T�20�0C�0C�/D�DT�UY�Uc�Uc�Td�e�C�"�3�'�'�Q�>�c��[U5RSURSUR<SUR	53$)Nz(stream_id=z, flags=z): )rrrr�21_body_repr�rs r!�__repr__�Frame.__repr__NsA���D�z�"�"�#�;�t�~�~�.>�h�t�z�z�n�TW�X\�Xg�Xg�Xi�Wj�k�	22r$c�4�[UR55$�N)�_raw_data_repr�serialize_bodyr's r!r&�Frame._body_reprSs���d�1�1�3�4�4r$c��[RUSS5upURUSSU-5 [U5 X4$)a23Takes a bytestring and tries to parse a single frame and print it.24 25This function is only provided for debugging purposes.26 27:param data: A memoryview object containing the raw data of at least28             one complete frame (header and body).29 30.. versionadded:: 6.0.031N�	)r�parse_frame_header�32parse_body�print)�data�frame�lengths   r!�explain�
Frame.explainXsD���0�0��b�q��:�
��
����a��F�33�+�,�
�e���}�r$c�p�[RU5nUSS-US-nUSnUSnUSS	-n[34U"U5n	U	RU5 X�4$![RanSn[	U5UeSnAff=f![a&nU(a[Xe5Ue[XhS359n	SnANiSnAff=f)a�36Takes a 9-byte frame header and returns a tuple of the appropriate37Frame object and the length that needs to be read from the socket.38 39This populates the flags field, and determines how long the body is.40 41:param header: A memoryview object containing the 9-byte frame header42               data of a frame. Must not contain more or less.43 44:param strict: Whether to raise an exception when encountering a frame45    not defined by spec and implemented by hyperframe.46 47:raises hyperframe.exceptions.UnknownFrameError: If a frame of unknown48    type is received.49 50.. versionchanged:: 5.0.051    Added ``strict`` parameter to accommodate :class:`ExtensionFrame`52zInvalid frame headerNr�r�������)rr)53�
_STRUCT_HBBBL�unpack�struct�errorr	�FRAMES�KeyErrorr�ExtensionFrame�parse_flags)54�header�strict�fields�errr r6�typ_errr5s55          r!r1�Frame.parse_frame_headeris���(	2�"�)�)�&�1�F���)�q�.�F�1�I�-���q�	���q�	���1�I�56�*�	�	D��5�M�)�,�E�	���%� �����%�|�|�	2�(�C�#�C�(�c�1��	2���	D��'��6�C�?�"��C�E��	D�s.�A�B�B�/A=�=B�57B5�B0�0B5c��URH+up#X-(dMURRU5 M- UR$r+)rrr)r�	flag_byter�flag_bits    r!rF�Frame.parse_flags�s9��"�0�0�N�D��#�#��58�59���t�$�1��z�z�r$c�<�UR5n[U5UlSnURHup4X0R;dMX$-nM [60R
URS-	S-URS-URUURS-5nXQ-$)zS61Convert a frame into a bytestring, representing the serialized form of62the frame.63rr:�����r>)	r-�lenrrrr?�packrr)r�bodyrrrOrGs      r!�	serialize�Frame.serialize�s���64�"�"�$���D�	��
���"�0�0�N�D��z�z�!��!��1��#�#�
�]�]�a�
�6�)��M�M�D� ��I�I���N�N�Z�'�65���}�r$c��[er+��NotImplementedErrorr's r!r-�Frame.serialize_body�s��!�!r$c��[e)a�66Given the body of a frame, parses it into frame data. This populates67the non-header parts of the frame: that is, it does not populate the68stream ID or flags.69 70:param data: A memoryview object containing the body data of the frame.71             Must not contain *more* data than the length returned by72             :meth:`parse_frame_header73             <hyperframe.frame.Frame.parse_frame_header>`.74rZ�rr4s  r!r2�Frame.parse_body�s75��"�!r$)rrr)�)r�intrz
Iterable[str]�return�None�rb�str)r4�76memoryviewrb�tuple[Frame, int])F)rGrfrH�boolrbrg)rNrarbr
�rb�bytes�r4rfrbrc)r�77__module__�__qualname__�__firstlineno__�__doc__r�__annotations__rrr"r(r&�staticmethodr7r1rFrWr-r2�__static_attributes__r`r$r!rr*sx���78!#�M�:�"��D�*��&*��79�)�(�*80�815�82���� �'��'�R��4"�"r$rc�\^�\rSrSrSrSS	U4SjjjrS83SjrSSjr\SSj5r	Sr84U=r$)
�Padding��zt85Mixin for frames that contain padding. Defines extra fields that can be86used and set by frames that can be padded.87c�4>�[TU]"U40UD6 X lgr+)�superr"�88pad_length)rrrx�kwargs�	__class__s    �r!r"�Padding.__init__�����
����-�f�-�%�r$c�b�SUR;a[RUR5$g)N�PADDEDr$)r�	_STRUCT_BrUrxr's r!�serialize_padding_data�Padding.serialize_padding_data�s$���t�z�z�!��>�>�$�/�/�2�2�r$c���SUR;a$[R"SUSS5SUlgg![RanSn[U5UeSnAff=f)Nr~z!BrrzInvalid Padding data)rrAr@rxrBr	�rr4rJr s    r!�parse_padding_data�Padding.parse_padding_data�s`���t�z�z�!�
6�"(�-�-��d�2�A�h�"?��"B������	�<�<�
6�,��'��,�#�5��
6�s�"6�A�89A�Ac�L�SSKnURS[SS9 UR$)Nrz:total_padding contains the same information as pad_length.r;)�90stacklevel)�warnings�warn�DeprecationWarningrx)rr�s  r!�
total_padding�Padding.total_padding�s+����
�
�H���	�	91�92���r$)rx�r)rrarxraryrrbrcri�r4rfrbra�rbra)rrlrmrnror"r�r��propertyr�rr�
__classcell__�rzs@r!rtrt�s0����93%�%��94����r$rtc�d^�\rSrSrSrSSU4SjjjrS	SjrS95SjrSrU=r	$)�Priority��z�96Mixin for frames that contain priority data. Defines extra fields that can97be used and set by frames that contain priority data.98c�L>�[TU]"U40UD6 X lX0lX@lgr+)rwr"�99depends_on�
stream_weight�	exclusive)rrr�r�r�ryrzs      �r!r"�Priority.__init__�s-���	����-�f�-�%��+��#�r$c��[RURUR(aSOS-UR5$)Nlr)�100_STRUCT_LBrUr�r�r�r's r!�serialize_priority_data� Priority.serialize_priority_datas0������O�O�T�^�^�z��C����101�	102r$c��[RUSS5uUlUl[URS-	5UlU=RS-slg![R103anSn[
U5UeSnAff=f)N�zInvalid Priority data�r>)	r�r@r�r�rArBr	rhr�r�s    r!�parse_priority_data�Priority.parse_priority_data104sw��	2�2<�2C�2C�D��!�H�2M�/�D�O�T�/�105�d�o�o��3�4������:�%����
�|�|�	2�)�C�#�C�(�c�1��	2�s�%A�B�.A<�<B)r�r�r�)rrF)rrar�rar�rar�rhryrrbrcrir�)106rrlrmrnror"r�r�rrr�r�s@r!r�r��sd����$'�&)�#(�	#��#� �#�!$�#�!�	#�107�#�108$(�#�#�"109�	�	r$r�c�^�\rSrSrSr\"SS5\"SS5/rSr\r	S
SU4Sjjjr110SS	jrSS111jr\
SSj5rSrU=r$)�	DataFrameiz�112DATA frames convey arbitrary, variable-length sequences of octets113associated with a stream. One or more DATA frames are used, for instance,114to carry HTTP request or response payloads.115�116END_STREAMrr~r:rc�4>�[TU]"U40UD6 X lgr+�rwr"r4�rrr4ryrzs    �r!r"�DataFrame.__init__(����
����-�f�-��	r$c���UR5nSUR-n[UR[5(aURR5UlSR
XRU/5$�N�r$)r�rx�117isinstancer4rf�tobytes�join)r�padding_data�paddings   r!r-�DataFrame.serialize_body.s[���2�2�4���$�/�/�)���d�i�i��,�,��	�	�)�)�+�D�I��x�x��y�y�'�:�;�;r$c��URU5nX[U5UR-118R5Ul[U5UlUR(a(URUR119:�a
Sn[
U5egg)N�Padding is too long.)r�rTrxr�r4rr120)rr4�padding_data_lengthr s    r!r2�DataFrame.parse_body5ss��"�5�5�d�;���S��Y�t���%>�?�G�G�I�	
�	��D�	��
��?�?�t���$�-�-�?�(�C�%�c�*�*� @�?r$c�t�SnSUR;aURS-n[UR5U-$)zW121The length of the frame that needs to be accounted for when considering122flow control.123rr~r)rrxrTr4)r�padding_lens  r!�flow_controlled_length� DataFrame.flow_controlled_length@s8�����t�z�z�!��/�/�A�-�K��4�9�9�~��+�+r$�rr4�r$�rrar4rjryrrbrcrirkr�)rrlrmrnrorrrrrr"r-r2r�r�rrr�r�s@r!r�r�sZ����	
�\�4� ��X�t���M��D�1����<�	+��124,��125,r$r�c�N�\rSrSr%Sr/rS\S'Sr\r	SSjr126SSjrS
SjrS	r
g127)�
PriorityFrameiNz�128The PRIORITY frame specifies the sender-advised priority of a stream. It129can be sent at any time for an existing stream. This enables130reprioritisation of existing streams.131rrr;c�T�SURSURSUR3$)N�132exclusive=�
, depends_on=�, stream_weight=)r�r�r�r's r!r&�PriorityFrame._body_repr]s.���D�N�N�+�=����8I�IY�Z^�Zl�Zl�Ym�n�nr$c�"�UR5$r+)r�r's r!r-�PriorityFrame.serialize_body`s���+�+�-�-r$c��[U5S:�aS[U5S3n[U5eURU5 SUlg)Nr�z.PRIORITY must have 5 byte body: actual length �.)rTr	r�r�rr4r s   r!r2�PriorityFrame.parse_bodycs?���t�9�q�=�B�3�t�9�+�Q�O�C�#�C�(�(�� � ��&���
r$)rNrdrirk)rrlrmrnrorrprrrr&r-r2rrr`r$r!r�r�Ns0���!#�M�:�"��D�1��o�.�r$r�c�j^�\rSrSr%Sr/rS\S'Sr\r	SSU4Sjjjr133S
SjrSSjrSS	jr
S134rU=r$)�RstStreamFrameila|135The RST_STREAM frame allows for abnormal termination of a stream. When sent136by the initiator of a stream, it indicates that they wish to cancel the137stream or that an error condition has occurred. When sent by the receiver138of a stream, it indicates that either the receiver is rejecting the stream,139requesting that the stream be cancelled or that an error condition has140occurred.141rrr<c�4>�[TU]"U40UD6 X lgr+)rwr"�142error_code)rrr�ryrzs    �r!r"�RstStreamFrame.__init__~r|r$c� �SUR3$)Nzerror_code=)r�r's r!r&�RstStreamFrame._body_repr�s���T�_�_�-�.�.r$c�@�[RUR5$r+)�	_STRUCT_LrUr�r's r!r-�RstStreamFrame.serialize_body�s���~�~�d�o�o�.�.r$c���[U5S:waS[U5S3n[U5e[RU5SUlSUlg![143RanSn[U5UeSnAff=f)Nr=z0RST_STREAM must have 4 byte body: actual length r�rzInvalid RST_STREAM body)rTr	r�r@r�rArBr�rr4r rJs    r!r2�RstStreamFrame.parse_body�sw���t�9��>�D�S��Y�K�q�Q�C�#�C�(�(�	2�'�.�.�t�4�Q�7�D�O�144��
��	�|�|�	2�+�C�#�C�(�c�1��	2�s�A�A7�$A2�2A7)rr�r�)rrar�raryrrbrcrdrirk)rrlrmrnrorrprrrr"r&r-r2rrr�r�s@r!r�r�ls?����!#�M�:�"��D�1��%�%�/�/��r$r�c�^�\rSrSrSr\"SS5/rSr\r	Sr145SrSrSr
SrS	rS146rSSU4SjjjrSSjrSS
jrSSjrSrU=r$)�
SettingsFramei�a�147The SETTINGS frame conveys configuration parameters that affect how148endpoints communicate. The parameters are either constraints on peer149behavior or preferences.150 151Settings are not negotiated. Settings describe characteristics of the152sending peer, which are used by the receiving peer. Different values for153the same setting can be advertised by each peer. For example, a client154might set a high initial flow control window, whereas a server might set a155lower value to conserve resources.156�ACKrr=r;r<r��r:c�>�[TU]"U40UD6 U(a#SURSS5;a
Sn[U5eU=(d 0Ulg)Nr�rr`z*Settings must be empty if ACK flag is set.)rwr"�getr�settings)rrr�ryr rzs     �r!r"�SettingsFrame.__init__�sG���
����-�f�-������G�R�!8�8�>�C�"�3�'�'�)1��B��
r$c� �SUR3$)Nz	settings=)r�r's r!r&�SettingsFrame._body_repr�s���4�=�=�/�*�*r$c157��SRURR5VVs/sHup[R	US-U5PM  snn5$s snnf)Nr$rS)r�r��items�158_STRUCT_HLrU)r�setting�values   r!r-�SettingsFrame.serialize_body�sV���x�x�/3�}�}�/B�/B�/D�F�/D�^�W�$����4���?�/D�F�G�	G��Fs�%A159c�t�SUR;a)[U5S:�aS[U5S3n[U5eSn[S[U5S5H3n[RXUS-5upVX`RU'US-
nM5 X0l160g![RanSn[U5UeSnAff=f)Nr�rz.SETTINGS ack frame must not have payload: got z bytesr�zInvalid SETTINGS body)rrTr�ranger�r@rArBr	r�r)rr4r r�i�namer�rJs        r!r2�SettingsFrame.parse_body�s����D�J�J��3�t�9�q�=�B�3�t�9�+�V�T�C�"�3�'�'����q�#�d�)�Q�'�A�
6�(�/�/��q��s��<���161#(�M�M�$����M�H�(�!�
���<�<�
6�-��'��,�#�5��
6�s�B�B7�$B2�2B7)rr�)rN)rrar�zdict[int, int] | Noneryrrbrcrdrirk)rrlrmrnrorrrrr�HEADER_TABLE_SIZE�ENABLE_PUSH�MAX_CONCURRENT_STREAMS�INITIAL_WINDOW_SIZE�MAX_FRAME_SIZE�MAX_HEADER_LIST_SIZE�ENABLE_CONNECT_PROTOCOLr"r&r-r2rrr�r�s@r!r�r��so���162��%��&�'�M��D�0��163���K�!�����N���"��7�7�+�G�!�!r$r�c�~^�\rSrSrSr\"SS5\"SS5/rSr\r	S
SU4Sjjjr164SS	jrSS165jrSSjr
SrU=r$)�PushPromiseFramei�zr166The PUSH_PROMISE frame is used to notify the peer endpoint in advance of167streams the sender intends to initiate.168�END_HEADERSr=r~r:r�c�@>�[TU]"U40UD6 X lX0lgr+)rwr"�promised_stream_idr4)rrr�r4ryrzs     �r!r"�PushPromiseFrame.__init__�s$���
����-�f�-�#5���	r$c�L�SURS[UR53$)Nzpromised_stream_id=�, data=)r�r,r4r's r!r&�PushPromiseFrame._body_repr�s)��$�T�%<�%<�$=�W�^�TX�T]�T]�E^�D_�`�`r$c��UR5nSUR-n[RUR5nSRXURU/5$r�)r�rxr�rUr�r�r4)rr�r�r4s    r!r-�PushPromiseFrame.serialize_bodysL���2�2�4���$�/�/�)���~�~�d�5�5�6���x�x��T�Y�Y��@�A�Ar$c�,�URU5n[RXUS-5SUlXS-[U5UR-169R5Ul170[U5UlURS:XdURS-S:waSUR3n[U5eUR(a(URUR:�a
Sn[U5egg![R171anSn[
U5UeSnAff=f)Nr=rzInvalid PUSH_PROMISE bodyr;z)Invalid PUSH_PROMISE promised stream id: r�)r�r�r@r�rArBr	rTrxr�r4rrr172)rr4r�rJr s     r!r2�PushPromiseFrame.parse_bodys��"�5�5�d�;��	2�&/�&6�&6��)<�q�)@�A�'��'�D�#�
�q�(��T��4�?�?�)B�C�K�K�M�	
�	��D�	��
��"�"�a�'�4�+B�+B�Q�+F�!�+K�=�d�>U�>U�=V�W�C�"�3�'�'��?�?�t���$�-�-�?�(�C�%�c�*�*� @�?���|�|�	2�-�C�#�C�(�c�1��	2�s�"C,�,D�D�D)rr4r��rr$)173rrar�rar4rjryrrbrcrdrirk�rrlrmrnrorrrrrr"r&r-r2rrr�r�s@r!r�r��sR����	
�]�D�!��X�t���M��D�1����a�B�+�+r$r�c�n^�\rSrSrSr\"SS5/rSr\r	SSU4Sjjjr174S
SjrSSjrSS	jr
S175rU=r$)�	PingFrameiz�176The PING frame is a mechanism for measuring a minimal round-trip time from177the sender, as well as determining whether an idle connection is still178functional. PING frames can be sent from any endpoint.179r�rr�c�4>�[TU]"U40UD6 X lgr+)rwr"�opaque_data)rrrryrzs    �r!r"�PingFrame.__init__.s���
����-�f�-�'�r$c�"�SUR<3$)Nzopaque_data=)rr's r!r&�PingFrame._body_repr4s���d�.�.�1�2�2r$c���[UR5S:�a#S[UR53n[U5eURnUSS[UR5-180--
nU$)Nr:z7PING frame may not have more than 8 bytes of data, got r�)rTrr	)rr r4s   r!r-�PingFrame.serialize_body7sh���t��� �1�$�K�C�PT�P`�P`�La�Kb�c�C�#�C�(�(�������1�s�4�#3�#3�4�4�5�5���r$c��[U5S:waS[U53n[U5eUR5UlSUlg)Nr:z(PING frame must have 8 byte length: got )rTr	r�rrr�s   r!r2�PingFrame.parse_body@s=���t�9��>�<�S��Y�K�H�C�#�C�(�(��<�<�>�����
r$)rrr)rrarrjryrrbrcrdrirk)rrlrmrnrorrrrrr"r&r-r2rrr�r�s@r!rrsD�����%��&�'�M��D�0��'�'�3���r$rc�^�\rSrSr%Sr/rS\S'Sr\r	SSU4Sjjjr181S
SjrSSjrSS	jr
S182rU=r$)�GoAwayFrameiIz�183The GOAWAY frame informs the remote peer to stop creating streams on this184connection. It can be sent from the client or the server. Once sent, the185sender will ignore frames sent on new streams for the remainder of the186connection.187rr�c�L>�[TU]"U40UD6 X lX0lX@lgr+)rwr"�last_stream_idr��additional_data)rrrr�rryrzs      �r!r"�GoAwayFrame.__init__Ys.���	����-�f�-�-��%�� /�r$c�V�SURSURSUR<3$)Nzlast_stream_id=z
, error_code=z, additional_data=)rr�rr's r!r&�GoAwayFrame._body_reprjs0�� ��!4�!4� 5�]�4�?�?�BS�Se�fj�fz�fz�e}�~�~r$c�|�[RURS-UR5nXR-
nU$�Nr>)�188_STRUCT_LLrUrr�rr^s  r!r-�GoAwayFrame.serialize_bodyms:��������*�,��O�O�189��	
�$�$�$���r$c��[RUSS5uUlUl[U5Ul[U5S:�aUSSR5Ul190gg![R191anSn[
U5UeSnAff=f)Nr:zInvalid GOAWAY body.)rr@rr�rArBr	rTrr�rr�s    r!r2�GoAwayFrame.parse_bodyvs���	2�3=�3D�3D��R�a��4�0�D�����D�	��
��t�9�q�=�#'���8�#3�#3�#5�D� ���
�|�|�	2�(�C�#�C�(�c�1��	2�s�%A � B�4B�B)rrr�r)rrrr$)rrarrar�rarrjryrrbrcrdrirk)rrlrmrnrorrprrrr"r&r-r2rrr�r�s@r!rrIs�����!#�M�:�"��D�0��#$�'(�#$�*-�	/��/�!$�/�!�/�#(�	/�192�/�193$(�/�/�"��6�6r$rc�j^�\rSrSr%Sr/rS\S'Sr\r	SSU4Sjjjr194S
SjrSSjrSS	jr
S195rU=r$)�WindowUpdateFramei�a�196The WINDOW_UPDATE frame is used to implement flow control.197 198Flow control operates at two levels: on each individual stream and on the199entire connection.200 201Both types of flow control are hop by hop; that is, only between the two202endpoints. Intermediaries do not forward WINDOW_UPDATE frames between203dependent connections. However, throttling of data transfer by any receiver204can indirectly cause the propagation of flow control information toward the205original sender.206rrr:c�4>�[TU]"U40UD6 X lgr+)rwr"�window_increment)rrr"ryrzs    �r!r"�WindowUpdateFrame.__init__�s���
����-�f�-�!1�r$c� �SUR3$)Nzwindow_increment=)r"r's r!r&�WindowUpdateFrame._body_repr�s��"�4�#8�#8�"9�:�:r$c�F�[RURS-5$r)r�rUr"r's r!r-� WindowUpdateFrame.serialize_body�s���~�~�d�3�3�j�@�A�Ar$c�>�[U5S:�aS[U53n[U5e[RU5SUlSURs=::aS::dO Sn[U5eSUlg![207RanSn[U5UeSnAff=f)Nr=z1WINDOW_UPDATE frame must have 4 byte length: got rzInvalid WINDOW_UPDATE bodyrr>z3WINDOW_UPDATE increment must be between 1 to 2^31-1)	rTr	r�r@r"rArBrrr�s    r!r2�WindowUpdateFrame.parse_body�s����t�9�q�=�E�c�$�i�[�Q�C�#�C�(�(�	2�$-�$4�$4�T�$:�1�$=�D�!�208�D�)�)�4�W�4�G�C�"�3�'�'���
���|�|�	2�.�C�#�C�(�c�1��	2�s�A5�5B�	B�B)rr"r�)rrar"raryrrbrcrdrirk)rrlrmrnrorrpr�_STREAM_ASSOC_EITHERrr"r&r-r2rrr�r�s@r!r r �s@����!#�M�:�"��D�-��1�1�;�B��r$r c�^�\rSrSrSr\"SS5\"SS5\"SS5\"S	S2095/rSr\r	SSU4Sjjjr210SSjrSS
jrSSjr
SrU=r$)�HeadersFramei�a�211The HEADERS frame carries name-value pairs. It is used to open a stream.212HEADERS frames can be sent on a stream in the "open" or "half closed213(remote)" states.214 215The HeadersFrame class is actually basically a data frame in this216implementation, because of the requirement to control the sizes of frames.217A header block fragment that doesn't fit in an entire HEADERS frame needs218to be followed with CONTINUATION frames. From the perspective of the frame219building code the header block is an opaque data segment.220r�rr�r=r~r:�PRIORITY� c�4>�[TU]"U40UD6 X lgr+r�r�s    �r!r"�HeadersFrame.__init__�r�r$c221��SURSURSURS[UR53$)Nr�r�r�r�)r�r�r�r,r4r's r!r&�HeadersFrame._body_repr�sa���D�N�N�+�=����8I�IY�Z^�Zl�Zl�Ym�mt�vD�EI�EN�EN�vO�uP�Q�	Qr$c���UR5nSUR-nSUR;aUR5nOSnSR	XUR222U/5$)Nr�r-r$)r�rxrr�r�r4)rr�r��
priority_datas    r!r-�HeadersFrame.serialize_body�sW���2�2�4���$�/�/�)������#� �8�8�:�M��M��x�x��d�i�i��I�J�Jr$c�b�URU5nXSnSUR;aURU5nOSn[U5UlX[U5UR223-224R
5UlUR225(a(UR226UR:�a
Sn[U5egg)Nr-rr�)	r�rr�rTrrxr�r4r227)rr4r��priority_data_lengthr s     r!r2�HeadersFrame.parse_body�s���"�5�5�d�;���(�)������#�#'�#;�#;�D�#A� �#$� ��D�	��
��c�$�i����&?�@�H�H�J�	
�	��?�?�t���$�-�-�?�(�C�%�c�*�*� @�?r$r�r�r�rdrirkrr�s@r!r,r,�sf���228�	
�\�4� ��]�D�!��X�t���Z���	�M��D�1����Q�	K�+�+r$r,c�n^�\rSrSrSr\"SS5/rSr\r	SSU4Sjjjr229S
SjrSSjrSS	jr
S230rU=r$)�ContinuationFramei�a�231The CONTINUATION frame is used to continue a sequence of header block232fragments. Any number of CONTINUATION frames can be sent on an existing233stream, as long as the preceding frame on the same stream is one of234HEADERS, PUSH_PROMISE or CONTINUATION without the END_HEADERS flag set.235 236Much like the HEADERS frame, hyper treats this as an opaque data frame with237different flags and a different type.238r�r=r0c�4>�[TU]"U40UD6 X lgr+r�r�s    �r!r"�ContinuationFrame.__init__
r�r$c�2�S[UR53$)Nzdata=)r,r4r's r!r&�ContinuationFrame._body_reprs���~�d�i�i�0�1�2�2r$c��UR$r+)r4r's r!r-� ContinuationFrame.serialize_bodys���y�y�r$c�N�UR5Ul[U5Ulgr+)r�r4rTrr^s  r!r2�ContinuationFrame.parse_body����L�L�N��	��D�	��
r$r�r�r�rdrirkrr�s@r!r:r:�sD�����-��.�/�M��D�1����3��"�"r$r:c�Z^�\rSrSrSrSr\rS	S239U4SjjjrSSjr	SSjr240S
SjrSrU=r
$)�AltSvcFrameiaW241The ALTSVC frame is used to advertise alternate services that the current242host, or a different one, can understand. This frame is standardised as243part of RFC 7838.244 245This frame does no work to validate that the ALTSVC field parameter is246acceptable per the rules of RFC 7838.247 248.. note:: If the ``stream_id`` of this frame is nonzero, the origin field249          must have zero length. Conversely, if the ``stream_id`` of this250          frame is zero, the origin field must have nonzero length. Put251          another way, a valid ALTSVC frame has ``stream_id != 0`` XOR252          ``len(origin) != 0``.253�254c��>�[TU]"U40UD6 [U[5(d
Sn[	U5e[U[5(d
Sn[	U5eX lX0lg)Nz#AltSvc origin must be a bytestring.z"AltSvc field must be a bytestring.)rwr"r�rjr�origin�field)rrrHrIryr rzs      �r!r"�AltSvcFrame.__init__2sY���
����-�f�-��&�%�(�(�7�C�"�3�'�'��%��'�'�6�C�"�3�'�'����255r$c�>�SUR<SUR<3$)Nzorigin=z, field=)rHrIr's r!r&�AltSvcFrame._body_repr>s�������x��256�257�~�>�>r$c��[R[UR55nSR	XRUR258/5$)Nr$)�	_STRUCT_HrUrTrHr�rI)r�259origin_lens  r!r-�AltSvcFrame.serialize_bodyAs5���^�^�C����$4�5�260��x�x��[�[�$�*�*�=�>�>r$c�t�[RUSS5SnUSSU-R5Ul[	UR5U:wa
Sn[U5eUSU-SR5Ul[	U5Ul261g![R[4anSn[U5UeSnAff=f)Nrr;zInvalid ALTSVC frame body.)rNr@r�rHrTr	rIrArB�262ValueErrorr)rr4rOr rJs     r!r2�AltSvcFrame.parse_bodyEs���	2�"�)�)�$�q��)�4�Q�7�J��q��:��.�6�6�8�D�K��4�;�;��:�-�2��'��,�,��a�263�l�m�,�4�4�6�D�J�264�D�	��
��	���j�)�	2�.�C�#�C�(�c�1��	2�s�A7B265�266B7�$B2�2B7)rrIrH)r$r$)267rrarHrjrIrjryrrbrcrdrirk)rrlrmrnrorr*rr"r&r-r2rrr�r�s@r!rErEs3���
��D�-��268�269�?�?�"�"r$rEc�`^�\rSrSrSr\rS	S270U4SjjjrSSjrSSjr	S
Sjr271SSjrSrU=r
$)rEiVa%272ExtensionFrame is used to wrap frames which are not natively interpretable273by hyperframe.274 275Although certain byte prefixes are ordained by specification to have276certain contextual meanings, frames with other prefixes are not prohibited,277and may be used to communicate arbitrary meaning between HTTP/2 peers.278 279Thus, hyperframe, rather than raising an exception when such a frame is280encountered, wraps it in a generic frame to be properly acted upon by281upstream consumers which might have additional context on how to use it.282 283.. versionadded:: 5.0.0284c�L>�[TU]"U40UD6 XlX0lX@lgr+)rwr"rrNrV)rrrrNrVryrzs      �r!r"�ExtensionFrame.__init__hs$���
����-�f�-��	�"���	r$c�f�SURSURS[UR53$)Nztype=z, flag_byte=z, body=)rrNr,rVr's r!r&�ExtensionFrame._body_reprns1���t�y�y�k��d�n�n�-=�W�^�TX�T]�T]�E^�D_�`�`r$c��Xlg)zG285For extension frames, we parse the flags by just storing a flag byte.286N)rN)rrNs  r!rF�ExtensionFrame.parse_flagsqs	��#�r$c�N�UR5Ul[U5Ulgr+)r�rVrTrr^s  r!r2�ExtensionFrame.parse_bodywrCr$c���URn[RURS-	S-URS-URUUR287S-5nX R-$)z�288A broad override of the serialize method that ensures that the data289comes back out exactly as it came in. This should not be used in most290user code: it exists only as a helper method if frames need to be291reconstituted.292r:rRrSr>)rNr?rUrrrrV)rrrGs   r!rW�ExtensionFrame.serialize{s_�������#�#�
�]�]�a�
�6�)��M�M�D� ��I�I���N�N�Z�'�293���	�	�!�!r$)rVrrNrr)rrarrarNrarVrjryrrbrcrd)rNrarbrcrkri)rrlrmrnror*rr"r&rFr2rWrrr�r�s@r!rErEVs4���
�.����a�#�"�"�"r$rEc��U(dg[R"U5RS5n[U5S:�aUSSS-nSU-S-$)Nrc�ascii�z...z<hex:�>)�binascii�hexlify�decoderT)r4�rs  r!r,r,�sL���������%�%�g�.�A�294�1�v��{�
�c�r�F�U�N���Q�;���r$zlist[type[Frame]]�_FRAME_CLASSES)r4zbytes | Nonerbre)3ro�295__future__rrcrA�typingrr�collections.abcr�296exceptionsrr	r297rrrr
�
FRAME_MAX_LEN�FRAME_MAX_ALLOWED_LENrrr*�Structr?rr�r�r�rNrrrtr�r�r�r�r�r�rrr r,r:rErEr,rgrprrC)�clss0r!�<module>rps����#��
�%��(�c�c���
�&��(��%�����
�
�h�'�
�
�]�]�5�
!�298�
�]�]�5�
!�299�
�]�]�5�
!�300��M�M�$��	��M�M�$��	��M�M�$��	�X"�X"�v%�%�P&�&�R5,���5,�p�H�e��<)�U�)�XG!�E�G!�T:+�w��:+�z'��'�T96�%�96�x1��1�h>+�7�H�e�>+�B!"��!"�H5"�%�5"�p8"�U�8"�v�������
�����%��!��$2�	2�>�C�(�(�C�-�>�	2���	2s�F
codekingpro/portable-devtools · Team Ai