o
    h.                     @   s^  d dl T d dlmZmZ g Zd ZeD ]	Zeee e< qedd eD 7 Ze	e
eeeeieeeeeieeeieeeieeeiei ei ei iee
eeeeee	feieeeeeeefeeefeieeeeeieeeieeeieeeiei ei iiZeefe	eieefeeiee
feeieefeeieefe	eie
efe	eieefe	eiiZG dd deZdS )	   )*)LocalProtocolErrormake_sentinelzCLIENT SERVER IDLE SEND_RESPONSE SEND_BODY DONE MUST_CLOSE CLOSED MIGHT_SWITCH_PROTOCOL SWITCHED_PROTOCOL ERROR _SWITCH_UPGRADE _SWITCH_CONNECTc                 C   s   g | ]	}| d s|qS )_)
startswith).0s r	   R/var/www/html/magazine_api/magazine_env/lib/python3.10/site-packages/h11/_state.py
<listcomp>   s    r   c                   @   sN   e Zd Zdd Zdd Zdd Zdd Zdd
dZdd Zdd Z	dd Z
d	S )ConnectionStatec                 C   s    d| _ t | _tttti| _d S )NT)
keep_alivesetpending_switch_proposalsCLIENTIDLESERVERstatesselfr	   r	   r
   __init__   s   zConnectionState.__init__c                 C   s   t | j|< |   d S N)ERRORr   !_fire_state_triggered_transitions)r   roler	   r	   r
   process_error   s   
zConnectionState.process_errorc                 C   s   d| _ |   d S )NF)r   r   r   r	   r	   r
   process_keep_alive_disabled   s   z+ConnectionState.process_keep_alive_disabledc                 C   s   | j | |   d S r   )r   addr   )r   Zswitch_eventr	   r	   r
   process_client_switch_proposal   s   z.ConnectionState.process_client_switch_proposalNc                 C   s   |d ur|t u s
J || jvrtd|||f}|d u r&|tu r&t | _| || |tu r>|tu s6J | t ttf | 	  d S )Nz3Received server {} event without a pending proposal)
r   r   r   formatResponser   !_fire_event_triggered_transitionsRequestr   r   )r   r   
event_typeZserver_switch_eventr	   r	   r
   process_event   s   
zConnectionState.process_eventc              
   C   sV   | j | }z
t| | | }W n ty#   td|j|| j | w || j |< d S )Nz4can't handle event type {} when role={} and state={})r   EVENT_TRIGGERED_TRANSITIONSKeyErrorr   r   __name__)r   r   r#   state	new_stater	   r	   r
   r!      s   
z1ConnectionState._fire_event_triggered_transitionsc                 C   s   	 t | j}| jr| jt tu rt| jt< | js$| jt tu r$t| jt< | js:ttfD ]}| j| tu r9t| j|< q+| jt | jt f}t	
|i }| j| | j|krWd S qr   )dictr   r   r   DONEMIGHT_SWITCH_PROTOCOLr   r   
MUST_CLOSESTATE_TRIGGERED_TRANSITIONSgetupdate)r   Zstart_statesr   Zjoint_statechangesr	   r	   r
   r      s&   




z1ConnectionState._fire_state_triggered_transitionsc                 C   s@   | j ttttikrtd| jsJ | jrJ tttti| _ d S )Nznot in a reusable state)r   r   r+   r   r   r   r   r   r   r	   r	   r
   start_next_cycle(  s
   

z ConnectionState.start_next_cycler   )r'   
__module____qualname__r   r   r   r   r$   r!   r   r2   r	   r	   r	   r
   r      s    

(r   N) Z_eventsZ_utilr   r   __all__splitZ	sentinelstokenglobalsr   r   r"   Z	SEND_BODYZConnectionClosedZCLOSEDZDataZEndOfMessager+   r-   r,   ZSWITCHED_PROTOCOLr   r   r    ZSEND_RESPONSEZInformationalResponseZ_SWITCH_UPGRADEZ_SWITCH_CONNECTr%   r.   objectr   r	   r	   r	   r
   <module>   s   q<