← back to Atmos Game

assets/gen/.venv/lib/python3.12/site-packages/httpcore/_sync/__pycache__/http2.cpython-312.pyc

155 lines

�

c�bjh[��@�ddlmZddlZddlZddlZddlZddlZddlZddl	Zddl
ZddlZddlZddl
mZddlmZmZmZddlmZmZmZddlmZmZmZddlmZd	d
lmZej>d�Z dd�Z!Gd
�dejD�Z#Gd�de�Z$Gd�d�Z%y)�)�annotationsN�)�
NetworkStream)�ConnectionNotAvailable�LocalProtocolError�RemoteProtocolError)�Origin�Request�Response)�Lock�	Semaphore�ShieldCancellation)�Trace�)�ConnectionInterfacezhttpcore.http2c�:�td�|jD��S)Nc3�rK�|]/\}}|j�dk(xs|j�dk(���1y�w)scontent-length�transfer-encodingN)�lower)�.0�k�vs   �k/Users/macstudio3/Projects/atmos-game/assets/gen/.venv/lib/python3.12/site-packages/httpcore/_sync/http2.py�	<genexpr>z#has_body_headers.<locals>.<genexpr>s<�����#�D�A�q�	
���	�&�&�K�!�'�'�)�7K�*K�K�#�s�57)�any�headers)�requests r�has_body_headersrs �����O�O����c��eZdZdZdZdZy)�HTTPConnectionStaterr�N)�__name__�
__module__�__qualname__�ACTIVE�IDLE�CLOSED�rrr!r!$s��
�F��D�
�Frr!c��eZdZdZej
j
d��Z	d					d d�Zd!d�Z	d"d�Z
d#d�Zd#d	�Z								d$d
�Z
d#d�Z						d%d�Z						d&d
�Z						d'd�Z	d					d(d�Z				d)d�Zd*d�Zd+d�Zd,d�Zd"d�Zd-d�Zd.d�Zd/d�Zd/d�Zd/d�Zd/d�Zd0d�Zd0d�Zd1d�Z 			d2							d3d�Z!y)4�HTTP2Connection�F)�validate_inbound_headersNc��||_||_||_tjj|j��|_tj|_
d|_d|_t�|_t�|_t�|_t�|_d|_d|_d|_i|_d|_d|_d|_y)N)�configrF)�_origin�_network_stream�_keepalive_expiry�h2�
connection�H2Connection�CONFIG�	_h2_stater!r'�_state�
_expire_at�_request_countr�
_init_lock�_state_lock�
_read_lock�_write_lock�_sent_connection_init�_used_all_stream_ids�_connection_error�_events�_connection_terminated�_read_exception�_write_exception)�self�origin�stream�keepalive_expirys    r�__init__zHTTP2Connection.__init__.s������%���/?������3�3�4�;�;�3�G���)�.�.���(,�������&����6����&����6���%*��"�$)��!�!&���
�	
��NR��#�15���26��rc	�x�|j|jj�s/td|jj�d|j����|j
5|jtjtjfvr2|xjdz
c_
d|_tj|_n
t��	ddd�|j5|js�	d|i}tdt ||�5|j"di|��ddd�d|_d|_|j,j.j0}t3|�|_t7||j*z
�D]}|j4j9��ddd�|j4j9�	|j,j;�}g|j<|<	||d�}tdt ||�5|jG||��ddd�td	t ||�5|jI||��ddd�td
t ||�5}|jK||��\}	}
|	|
f|_&ddd�tO	
tQ|||��d|jR|d
���S#1swY���xYw#1swY���xYw#t$$r7}t'�5|j)�ddd�|�#1swY|�xYwd}~wwxYw#1swY��pxYw#t>j@jB$r'd|_"|xjdzc_
t��wxYw#1swY��LxYw#1swY��+xYw#1swY��xYw#t$$r�}t'�5d|i}tdt ||�5|jU|��ddd�n#1swYnxYwddd�n#1swYnxYwtW|t>j@jX�r,|jZrt]|jZ��t_|��|�d}~wwxYw)NzAttempted to send request to z on connection to rr�send_connection_initT�r�	stream_id�send_request_headers�send_request_body�receive_response_headers�rNsHTTP/2)�http_version�network_streamrN)�statusr�content�
extensionsrN�response_closedr))0�can_handle_request�urlrG�RuntimeErrorr0r<r8r!r&r'r:r9rr;r?r�logger�_send_connection_init�
BaseExceptionr�close�_max_streamsr7�local_settings�max_concurrent_streamsr
�_max_streams_semaphore�range�acquire�get_next_available_stream_idrBr3�
exceptions�NoAvailableStreamIDErrorr@�_send_request_headers�_send_request_body�_receive_response�return_valuer�HTTP2ConnectionByteStreamr1�_response_closed�
isinstance�
ProtocolErrorrCrr)rFr�
sci_kwargs�exc�local_settings_max_streams�_rN�kwargs�tracerUrs           r�handle_requestzHTTP2Connection.handle_requestUs����&�&�w�{�{�'9�'9�:�
�/����0B�0B�/C�D��l�l�^�%��
�
�
�
��{�{�2�9�9�;N�;S�;S�T�T��#�#�q�(�#�"&���1�8�8���,�.�.��	��_�_��-�-�	�"+�W�!5�J��.�����3��2�2�@�Z�@��.2��*�%&��!��N�N�1�1�H�H�+�/8�8R�.S��+��9�D�<M�<M�M�N�A��/�/�7�7�9�O�1�6	
�#�#�+�+�-�	+����C�C�E�I�&(�D�L�L��#�.	�!(�y�A�F��-�v�w��G��*�*�7�i�*�P�H��*�F�G�V�D��'�'��9�'�M�E��*�F�G�V���"&�"8�"8�#�y�#9�#����'-�g�%6��"�
����1�$��9�U�$-�&*�&:�&:�!*��		�	
�w�
�����%��+�-��
�
��.��I�.��I�����_��@�}�}�5�5�	+�(,�D�%����1�$��(�*�*�	+��H�G��D�D�����$�	�#�%�%�y�1���,�f�g�v�F��)�)�I�)�>�G�F�F��&�%�%��
�#�r�}�}�:�:�;��.�.�-�d�.I�.I�J�J�)��-�-��I��-	�s�!A)J$�
L�-J>�J1�J>�A5L�6)L� M;�7M�M;�%M"�9M;� M/�30M;�$J.�1J;	�6J>�>	K>�
K9�K,�"
K9�,K6�1K9�9K>�>L�L�AM�M�M;�"M,�'M;�/M8�4M;�;	P9�
P4�O�%O�8	O�O
�O�
	P4�O	�AP4�4P9c	�:�tjjdtjjjdtjjj
dtjjjdi��|j_|jjtjjj=|jj�|jjd�|j|�y)z�
        The HTTP/2 connection requires some initial setup before we can start
        using individual request/response streams on it.
        Tr�dr,)�client�initial_values�N)
r3�settings�Settings�SettingCodes�ENABLE_PUSH�MAX_CONCURRENT_STREAMS�MAX_HEADER_LIST_SIZEr7ra�ENABLE_CONNECT_PROTOCOL�initiate_connection�increment_flow_control_window�_write_outgoing_data)rFrs  rr]z%HTTP2Connection._send_connection_init�s���)+���(<�(<�����(�(�4�4�a����(�(�?�?�����(�(�=�=�u�
�)=�
)
����%�
�N�N�)�)��K�K�$�$�<�<�
�	
���*�*�,����4�4�U�;��!�!�'�*rc�<�t|�}|jD��cgc]\}}|j�dk(s�|��c}}d}d|jfd|fd|jj
fd|jjfg|jD��cgc])\}}|j�dvr|j�|f��+c}}z}|jj|||��|jjd	|�
�|j|�ycc}}wcc}}w)z@
        Send the request headers to a given stream ID.
        �hostrs:methods
:authoritys:schemes:path)r�r)�
end_streamr|rRN)rrr�methodrZ�scheme�targetr7�send_headersr�r�)rFrrNr�rr�	authorityrs        rriz%HTTP2Connection._send_request_headers�s��*�'�2�2�
�$+�?�?�K�?�4�1�a�a�g�g�i�7�6J�Q�?�K�A�N�	�����(�
�I�&�
����+�+�,�
�w�{�{�)�)�*�	
� ���
�'���1��w�w�y����W�W�Y��N�'�
�

��	
���#�#�I�w�:�#�N����4�4�U�i�4�P��!�!�'�*��'L��
s�D�D�.Dc���t|�syt|jtj�sJ�|jD]}|j|||��|j
||�y)zP
        Iterate over the request body sending it to a given stream ID.
        N)rrorH�typing�Iterable�_send_stream_data�_send_end_stream)rFrrN�datas    rrjz"HTTP2Connection._send_request_body�sW�� ��(���'�.�.�&�/�/�:�:�:��N�N�D��"�"�7�I�t�<�#����g�y�1rc���|rb|j||�}tt|�|�}|d|||d}}|jj	||�|j|�|r�ayy)zI
        Send a single chunk of data in one or more data frames.
        N)�_wait_for_outgoing_flow�min�lenr7�	send_datar�)rFrrNr��max_flow�
chunk_size�chunks       rr�z!HTTP2Connection._send_stream_data	sg����3�3�G�Y�G�H��S��Y��1�J��{�
�+�T�*�+�->�4�E��N�N�$�$�Y��6��%�%�g�.�rc�\�|jj|�|j|�y)z`
        Send an empty data frame on on a given stream ID with the END_STREAM flag set.
        N)r7r�r�)rFrrNs   rr�z HTTP2Connection._send_end_streams$��	
���!�!�)�,��!�!�'�*rc�V�	|j||�}t|tjj�rn�8d}g}|j
�J�|j
D]L\}}|dk(rt
|jdd���}�(|jd�r�:|j||f��N||fS)zT
        Return the response status code and headers for a given stream ID.
        ��s:status�ascii�ignore)�errors�:)
�_receive_stream_eventror3�events�ResponseReceivedr�int�decode�
startswith�append)rFrrN�event�status_coderrrs        rrkz!HTTP2Connection._receive_responses�����.�.�w�	�B�E��%����!;�!;�<���
�����}�}�(�(�(��M�M�D�A�q��J��!�!�(�(�7�8�(�"D�E���\�\�$�'�����1�v�&�	"��W�%�%rc#�K�	|j||�}t|tjj�rd|j
�J�|j�J�|j
}|jj||�|j|�|j��n%t|tjj�ry���w)z]
        Iterator that returns the bytes of the response body for a given stream ID.
        N)r�ror3r��DataReceived�flow_controlled_lengthr�r7�acknowledge_received_datar��StreamEnded)rFrrNr��amounts     r�_receive_response_bodyz&HTTP2Connection._receive_response_body5s�������.�.�w�	�B�E��%����!7�!7�8��3�3�?�?�?��z�z�-�-�-��5�5�����8�8���K��)�)�'�2��j�j� ��E�2�9�9�#8�#8�9���s�CCc�2�|jj|�s.|j||�|jj|�s�.|j|jd�}t	|t
jj�rt|��|S)z�
        Return the next available event for a given stream ID.

        Will read more data from the network if required.
        r)	rB�get�_receive_events�popror3r��StreamResetr)rFrrNr�s    rr�z%HTTP2Connection._receive_stream_eventGsw���,�,�"�"�9�-�� � ��)�4��,�,�"�"�9�-����Y�'�+�+�A�.���e�R�Y�Y�2�2�3�%�e�,�,��rc	��|j5|j�S|jj}|r&|r$||kDr|xjdzc_t	��t|j��|�|jj|��sQ|j|�}|D�]:}t|tjj�r3tdt|�5}|j|�||_ddd��[t|tjj"tjj$tjj&tjj(f�rC|j*|jvs��|j|j*j-|���t|tjj.�s��4||_��=ddd�|j1|�y#1swY��bxYw#1swY�(xYw)zp
        Read some data from the network until we see one or more events
        for a given stream ID.
        Nr�receive_remote_settings)r=rC�last_stream_idr:rrrBr��_read_incoming_dataror3r��RemoteSettingsChangedrr\�_receive_remote_settings_changerlr�r�r�r�rNr��ConnectionTerminatedr�)rFrrNr�r�r�rvs       rr�zHTTP2Connection._receive_eventsVs����_�_��*�*�6�!%�!<�!<�!K�!K����I��4N��'�'�1�,�'�0�2�2�)�$�*E�*E�F�F�� ����(8�(8��(C��1�1�'�:��#�E�!�%����)H�)H�I�"�5�v�w��"� �@�@��G�16�E�.�	��$���I�I�6�6��I�I�2�2��I�I�1�1��I�I�1�1�	��!�?�?�d�l�l�:� �L�L����9�@�@��G�#�E�2�9�9�+I�+I�J�6;��3�+$�!�N	
�!�!�'�*�+���%�_�s2�C
H�G6�0BH�AH�
H�6H�;H�Hc�L�|jjtjjj
�}|r�t
|j|jjj�}|r�||jk7r�||jkDr?|jj�|xjdz
c_||jkDr�?||jkr@|jj�|xjdzc_||jkr�?yyyyy)Nr)�changed_settingsr�r3r}rr�r��	new_valuer7rarbr`rc�releasere)rFr�rb�new_max_streamss    rr�z/HTTP2Connection._receive_remote_settings_change�s���"'�!7�!7�!;�!;��K�K�$�$�;�;�"
��"�!�&�0�0����-�-�D�D��O��?�d�6G�6G�#G�%��(9�(9�9��/�/�7�7�9��%�%��*�%�&��(9�(9�9�&��(9�(9�9��/�/�7�7�9��%�%��*�%�&��(9�(9�9�	$H��"rc��|jj�|j|=|j5|jr|js|j�n�|jtjk(rq|jsetj|_|j�(tj�}||jz|_
|jr|j�ddd�y#1swYyxYw�N)rcr�rBr<rCr_r8r!r&r'r2�time�	monotonicr9r@)rFrN�nows   rrnz HTTP2Connection._response_closed�s����#�#�+�+�-��L�L��#�
�
�
��*�*�4�<�<��
�
����� 3� :� :�:�4�<�<�1�6�6����)�)�5��.�.�*�C�&)�D�,B�,B�&B�D�O��,�,��J�J�L��
�
�s�B8C5�5C>c��|jj�tj|_|j
j
�yr�)r7�close_connectionr!r(r8r1r_�rFs rr_zHTTP2Connection.close�s3��	
���'�'�)�)�0�0������"�"�$rc�z�|jjdi�}|jdd�}|j�|j�	|jj	|j
|�}|dk(rt
d��	|jj|�}|S#t$r}||_d|_|�d}~wwxYw)N�timeout�readrzServer disconnectedT)rWr�rDr1r��READ_NUM_BYTESr�	ExceptionrAr7�receive_data)rFr�timeoutsr�r�rrr�s       rr�z#HTTP2Connection._read_incoming_data�s����%�%�)�)�)�R�8���,�,�v�t�,�����+��&�&�&�	��'�'�,�,�T�-@�-@�'�J�D��s�{�)�*?�@�@��)-���(C�(C�D�(I���
���	�$'�D� �%)�D�"��I��	�s�6B�	B:�%B5�5B:c��|jjdi�}|jdd�}|j5|jj	�}|j
�|j
�	|jj||�	ddd�y#t$r}||_d|_	|�d}~wwxYw#1swYyxYw)Nr��writeT)
rWr�r>r7�data_to_sendrEr1r�r�rA)rFrr�r�r�rrs      rr�z$HTTP2Connection._write_outgoing_data�s����%�%�)�)�)�R�8���,�,�w��-��
�
�
��>�>�6�6�8�L��$�$�0��+�+�+�

��$�$�*�*�<��A��
���
�),��%�)-��&��	��
���
�s)�3B6�/B�	B3�B.�.B3�3B6�6B?c�2�|jj|�}|jj}t||�}|dk(rT|j	|�|jj|�}|jj}t||�}|dk(r�T|S)a
        Returns the maximum allowable outgoing flow for a given stream.

        If the allowable flow is zero, then waits on the network until
        WindowUpdated frames have increased the flow rate.
        https://tools.ietf.org/html/rfc7540#section-6.9
        r)r7�local_flow_control_window�max_outbound_frame_sizer�r�)rFrrN�
local_flow�max_frame_size�flows      rr�z'HTTP2Connection._wait_for_outgoing_flow�s����.�.�B�B�9�M�
�"�n�n�D�D���:�~�.���a�i�� � ��)����A�A�)�L�J�!�^�^�C�C�N��z�>�2�D�	�a�i�
�rc� �||jk(Sr�)r0�rFrGs  rrYz"HTTP2Connection.can_handle_request�s������%�%rc��|jtjk7xrd|jxrU|jxrF|j
jjtjjjk(Sr�)r8r!r(rAr@r7�
state_machine�stater3r4�ConnectionStater�s r�is_availablezHTTP2Connection.is_available�ss���K�K�.�5�5�5�
��*�*�*�
��-�-�-�
����,�,�2�2��=�=�0�0�7�7�8��		
rc�h�tj�}|jduxr||jkDSr�)r�r�r9)rFr�s  r�has_expiredzHTTP2Connection.has_expired
s+���n�n������d�*�D�s�T�_�_�/D�Drc�<�|jtjk(Sr�)r8r!r'r�s r�is_idlezHTTP2Connection.is_idles���{�{�1�6�6�6�6rc�<�|jtjk(Sr�)r8r!r(r�s r�	is_closedzHTTP2Connection.is_closeds���{�{�1�8�8�8�8rc�|�t|j�}|�d|jj�d|j��S)Nz
, HTTP/2, �, Request Count: )�strr0r8�namer:r�s  r�infozHTTP2Connection.infosA���T�\�\�"���j�
�4�;�;�#3�#3�"4�5�"�1�1�2�
4�	
rc	��|jj}t|j�}d|�d|�d|jj
�d|j�d�	S)N�<z [z, r�z]>)�	__class__r#r�r0r8r�r:)rF�
class_namerGs   r�__repr__zHTTP2Connection.__repr__sZ���^�^�,�,�
��T�\�\�"���
�|�2�f�Z�r�$�+�+�*:�*:�);�<�"�1�1�2�"�
6�	
rc��|Sr�r)r�s r�	__enter__zHTTP2Connection.__enter__&s���rc�$�|j�yr�)r_)rF�exc_type�	exc_value�	tracebacks    r�__exit__zHTTP2Connection.__exit__)s
��	
�
�
�rr�)rGr	rHrrIzfloat | None)rr
�returnr)rr
r��None)rr
rNr�r�r�)rr
rNr�r��bytesr�r�)rr
rNr�r�z%tuple[int, list[tuple[bytes, bytes]]])rr
rNr�r��typing.Iterator[bytes])rr
rNr�r�zKh2.events.ResponseReceived | h2.events.DataReceived | h2.events.StreamEnded)rr
rNz
int | Noner�r�)r�zh2.events.RemoteSettingsChangedr�r�)rNr�r�r��r�r�)rr
r�zlist[h2.events.Event])rr
rNr�r�r�)rGr	r��bool)r�r)r�r�)r�r+)NNN)r�ztype[BaseException] | Noner�zBaseException | Noner�ztypes.TracebackType | Noner�r�)"r#r$r%r�r3r/�H2Configurationr6rJrwr]rirjr�r�rkr�r�r�r�rnr_r�r�r�rYr�r�r�r�r�r�r�r�r)rrr+r+*s����N�
�Y�Y�
&�
&��
&�
F�F�*.�	%7��%7��%7�'�	%7�Nf�P+�B+�>
2�/��/�+.�/�6;�/�	
�/�+�&��&�+.�&�	.�&�,���+.��	��$
��
�+.�
�	T�
� 9=�.+��.+�+5�.+�	
�.+�`+�4�+�	
�+�&
!�%��8�6�(&�	
�E�7�9�
�
��
04�*.�04�	�,��(��.�	�

�rr+c�4�eZdZ								dd�Zdd�Zdd�Zy)rmc�<�||_||_||_d|_y)NF)�_connection�_request�
_stream_id�_closed)rFr4rrNs    rrJz"HTTP2ConnectionByteStream.__init__3s!��&�����
�#�����rc#�K�|j|jd�}	tdt|j|�5|jj|j|j��D]}|���	ddd�y#1swYyxYw#t$r7}t�5|j�ddd�|�#1swY|�xYwd}~wwxYw�w)NrM�receive_response_body)	rrrr\rr�r^rr_)rFrur�rrs    r�__iter__z"HTTP2ConnectionByteStream.__iter__;s�����!�]�]����I��	��.���
�
�v�N�!�-�-�D�D� �M�M�T�_�_�E��E� �K��O�N�N��
�	�$�%��
�
��&��I�&��I��
	�sc�C
�B
�;A>�5B
�=C
�>B�B
�C
�B
�
	C
�
C�B8�.
C�8C	�=C�C
�
C
c���|jsad|_d|ji}tdt|j|�5|j
j
|j��ddd�yy#1swYyxYw)NTrNrXrR)rrrr\rrrn)rFrus  rr_zHTTP2ConnectionByteStream.closeKsd���|�|��D�L�!�4�?�?�3�F��(�&�$�-�-��H�� � �1�1�D�O�O�1�L�I�H��I�H�s�'A/�/A8N)r4r+rr
rNr�r�r�)r�r�r�)r#r$r%rJr
r_r)rrrmrm2s2���)��4;��HK��	
��� Mrrm)rr
r�r)&�
__future__r�enum�loggingr��typesr��	h2.configr3�
h2.connection�	h2.events�
h2.exceptions�h2.settings�_backends.baser�_exceptionsrrr�_modelsr	r
r�_synchronizationrr
r�_tracer�
interfacesr�	getLoggerr\r�IntEnumr!r+rmr)rr�<module>rs���"�����
������*���
0�/�B�B��+�	��	�	�+�	,����$�,�,��E�)�E�PM�Mr