← back to Atmos Game
assets/gen/.venv/lib/python3.12/site-packages/h11/__pycache__/_connection.cpython-312.pyc
226 lines
�
c�bj�h � � � d dl mZmZmZmZmZmZmZmZm Z m
Z
ddlmZm
Z
mZmZmZmZmZ ddlmZmZmZ ddlmZmZ ddlmZ ddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z* dd l+m,Z,m-Z- g d
�Z. G d� de*e*�
� Z/ G d� de*e*�
� Z0dZ1de
eef de2fd�Z3de4de
eef dee5e
ed ee6 f f fd�Z7 G d� d� Z8y)� )
�Any�Callable�cast�Dict�List�Optional�overload�Tuple�Type�Union� )�ConnectionClosed�Data�EndOfMessage�Event�InformationalResponse�Request�Response)�get_comma_header�has_expect_100_continue�set_comma_header)�READERS�ReadersType)�
ReceiveBuffer)
�_SWITCH_CONNECT�_SWITCH_UPGRADE�CLIENT�ConnectionState�DONE�ERROR�MIGHT_SWITCH_PROTOCOL� SEND_BODY�SERVER�SWITCHED_PROTOCOL)�LocalProtocolError�RemoteProtocolError�Sentinel)�WRITERS�WritersType)�
Connection� NEED_DATA�PAUSEDc � � e Zd Zy)r+ N��__name__�
__module__�__qualname__� � �f/Users/macstudio3/Projects/atmos-game/assets/gen/.venv/lib/python3.12/site-packages/h11/_connection.pyr+ r+ 3 � � �r3 r+ )� metaclassc � � e Zd Zy)r, Nr. r2 r3 r4 r, r, 7 r5 r3 r, i @ �event�returnc �\ � t | j d� }d|v ryt | dd� dk ryy)N�
connection� closeF�http_version� 1.1T)r �headers�getattr)r8 �
connections r4 �_keep_aliverB T s4 � �!�%�-�-��?�J��:����u�n�f�-��6��r3 �request_methodr2 c � � t |� t t fv sJ �t |� t u rB|j dv s"| dk( s| dk( rd|j cxk rdk ry ny|j dk\ sJ �t |j
d� }|r |dgk( sJ �y t |j
d
� }|rdt
|d � ffS t |� t u ryy
)N)�� i0 � HEAD� CONNECT�� �, )�content-length)r � transfer-encoding� chunked)�chunkedr2 � content-lengthrJ r )�http/1.0r2 )�typer r �status_coder r? �int)rC r8 �transfer_encodings�content_lengthss r4 �
_body_framingrU ] s� � � ��;�7�H�-�-�-�-� �E�{�h������+���(��*�,���8I�8I�1O�C�1O�+� 2P�+� � � �C�'�'�'� *�%�-�-�9M�N���!�j�\�1�1�1�� '�u�}�}�6G�H�O�� �3��q�'9�#:�"<�=�=� �E�{�g��'�r3 c � � e Zd ZdZefdee deddfd�Ze de
ee ee f fd�� Ze dee fd�� Ze dee fd �� Z
e defd
�� Zd#d�Zdee ddfd
�Zdedeee fd�Zdee deddfd�Zdee dee deeef deedef fd�Z d$de
ee ee f dee ddfd�Ze deeef fd�� Zdeddfd�Z deeee! ee" f fd�Z#deeee! ee" f fd�Z$e%de&ddfd�� Z'e%dee(e)e*e+e,f defd�� Z'e%dedee fd�� Z'dedee fd�Z'dedee-e fd�Z.d#d �Z/d!e*de*fd"�Z0y)%r* aB An object encapsulating the state of an HTTP connection.
Args:
our_role: If you're implementing a client, pass :data:`h11.CLIENT`. If
you're implementing a server, pass :data:`h11.SERVER`.
max_incomplete_event_size (int):
The maximum number of bytes we're willing to buffer of an
incomplete event. In practice this mostly sets a limit on the
maximum size of the request/response line + headers. If this is
exceeded, then :meth:`next_event` will raise
:exc:`RemoteProtocolError`.
�our_role�max_incomplete_event_sizer9 Nc � � || _ |t t fvrt d|��� �|| _ | |t u rt | _ nt | _ t
� | _ | j | j d t � | _
| j | j
d t � | _ t � | _ d| _ d | _ d | _ d| _ y )Nzexpected CLIENT or SERVER, not F)�_max_incomplete_event_sizer r# �
ValueErrorrW �
their_roler �_cstate�_get_io_objectr( �_writerr �_readerr �_receive_buffer�_receive_buffer_closed�their_http_version�_request_method�"client_is_waiting_for_100_continue)�selfrW rX s r4 �__init__zConnection.__init__� s� � �
+D��'��F�F�+�+��>�x�l�K�L�L� ��
���v��$�D�O�$�D�O�&�(��� �*�*�4�=�=�$��H����*�*�4�?�?�D�'�J��� -���� ',��#� 48���04��� 38��/r3 c �@ � t | j j � S )z�A dictionary like::
{CLIENT: <client state>, SERVER: <server state>}
See :ref:`state-machine` for details.
)�dictr] �states�rf s r4 rj zConnection.states� s � � �D�L�L�'�'�(�(r3 c �H � | j j | j S )zjThe current state of whichever role we are playing. See
:ref:`state-machine` for details.
)r] rj rW rk s r4 � our_statezConnection.our_state� s � �
�|�|�"�"�4�=�=�1�1r3 c �H � | j j | j S )znThe current state of whichever role we are NOT playing. See
:ref:`state-machine` for details.
)r] rj r\ rk s r4 �their_statezConnection.their_state� s � �
�|�|�"�"�4�?�?�3�3r3 c �B � | j t u xr | j S �N)r\ r re rk s r4 �!they_are_waiting_for_100_continuez,Connection.they_are_waiting_for_100_continue� s � ����&�(�T�T�-T�-T�Tr3 c �� � t | j j � }| j j � d| _ | j
rJ �| j
|� y)a� Attempt to reset our connection state for a new request/response
cycle.
If both client and server are in :data:`DONE` state, then resets them
both to :data:`IDLE` state in preparation for a new request/response
cycle on this same connection. Otherwise, raises a
:exc:`LocalProtocolError`.
See :ref:`keepalive-and-pipelining`.
N)ri r] rj �start_next_cyclerd re �_respond_to_state_changes)rf �
old_statess r4 rt zConnection.start_next_cycle� sO � � �$�,�,�-�-�.�
����%�%�'�#��� �:�:�:�:��&�&�z�2r3 �rolec � � t | j j � }| j j |� | j |� y rq )ri r] rj �
process_errorru )rf rw rv s r4 �_process_errorzConnection._process_error� s6 � ��$�,�,�-�-�.�
����"�"�4�(��&�&�z�2r3 r8 c �� � t |� t u r|j dk( rt S t |� t u r9t
| j j v rd|j cxk r
dk rt
S y y )N�e rH rI )rP r rQ r r r r] �pending_switch_proposals�rf r8 s r4 �_server_switch_eventzConnection._server_switch_event sc � ���;�/�/�E�4E�4E��4L�"�"���;�(�"��4�<�<�#H�#H�H��5�,�,�2�s�2�&�&� 3� r3 c �Z � t | j j � }|t u rtt |� t
u rc|j dk( r| j j t � t |j d� r| j j t � d }|t u r| j |� }| j j |t |� |� t |� t
u r|j | _ || j u rOt |� t
t"