o
    h3                     @   s  U d dl mZmZmZmZmZmZmZ ddlT ddl	m
Z
mZ g dZG dd deedZG d	d
 d
eedZG dd deedZG dd deedZG dd deedZG dd deedZG dd deedZG dd deedZG dd deedZG dd deedZG dd deedZG dd deedZG dd  d eedZeee eee eeee eee ee f f ee f f f 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#d!< eeee ee f eee ee f f 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%e$e#d"< G d#d$ d$Z&d%S )&    )castDictOptionalSetTupleTypeUnion   )*)LocalProtocolErrorSentinel)CLIENTSERVERIDLESEND_RESPONSE	SEND_BODYDONE
MUST_CLOSECLOSEDMIGHT_SWITCH_PROTOCOLSWITCHED_PROTOCOLERRORc                   @      e Zd ZdS )r   N__name__
__module____qualname__ r   r   ^/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/h11/_state.pyr          r   )	metaclassc                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )r   Nr   r   r   r   r   r      r   r   c                   @   r   )_SWITCH_UPGRADENr   r   r   r   r   r!      r   r!   c                   @   r   )_SWITCH_CONNECTNr   r   r   r   r   r"      r   r"   EVENT_TRIGGERED_TRANSITIONSSTATE_TRIGGERED_TRANSITIONSc                	   @   s   e Zd ZdddZdee ddfddZddd	Zd
ee ddfddZ	ddee dee	 de
ee  ddfddZdee deee	 eee	 ee f f ddfddZdddZdddZdS )ConnectionStatereturnNc                 C   s    d| _ t | _tttti| _d S )NT)
keep_alivesetpending_switch_proposalsr   r   r   statesselfr   r   r   __init__   s   zConnectionState.__init__rolec                 C   s   t | j|< |   d S N)r   r*   !_fire_state_triggered_transitions)r,   r.   r   r   r   process_error  s   
zConnectionState.process_errorc                 C   s   d| _ |   d S )NF)r'   r0   r+   r   r   r   process_keep_alive_disabled  s   z+ConnectionState.process_keep_alive_disabledswitch_eventc                 C   s   | j | |   d S r/   )r)   addr0   )r,   r3   r   r   r   process_client_switch_proposal  s   z.ConnectionState.process_client_switch_proposal
event_typeserver_switch_eventc                 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 s8J | t ttf | 	  d S )Nz3Received server {} event without a pending proposal)
r   r)   r   formatResponser(   !_fire_event_triggered_transitionsRequestr   r0   )r,   r.   r6   r7   _event_typer   r   r   process_event  s"   
zConnectionState.process_eventc              
   C   sf   | j | }z
t| | | }W n ty+   ttt |}td|j|| j | d w || j |< d S )Nz4can't handle event type {} when role={} and state={})	r*   r#   KeyErrorr   r   Eventr   r8   r   )r,   r.   r6   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   r   r   r'   r   r   r$   getupdate)r,   start_statesr.   joint_statechangesr   r   r   r0   >  s&   




z1ConnectionState._fire_state_triggered_transitionsc                 C   sH   | j ttttikrtd| j | jsJ | jrJ tttti| _ d S )Nz'not in a reusable state. self.states={})	r*   r   r   r   r   r8   r'   r)   r   r+   r   r   r   start_next_cyclef  s   


z ConnectionState.start_next_cycle)r&   Nr/   )r   r   r   r-   r   r   r1   r2   r5   r?   r   r=   r   r   r:   r0   rH   r   r   r   r   r%      s0    





(r%   N)'typingr   r   r   r   r   r   r   _events_utilr   r   __all__r   r   r   r   r   r   r   r   r   r   r   r!   r"   r?   EventTransitionTyper;   ConnectionClosedDataEndOfMessager9   InformationalResponser#   __annotations__StateTransitionTyper$   r%   r   r   r   r   <module>   s   &p*	
!&	