o
    =j¯3  ã                   @   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   úTC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\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(   r1   r,   r   r   r   Úprocess_keep_alive_disabled  s   z+ConnectionState.process_keep_alive_disabledÚswitch_eventc                 C   s   | j  |¡ |  ¡  d S r0   )r*   Úaddr1   )r-   r4   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 s5J ‚|  t ttf¡ |  ¡  d S )Nz@Received server _SWITCH_UPGRADE event without a pending proposal)	r   r*   r   ÚResponser)   Ú!_fire_event_triggered_transitionsÚRequestr   r1   )r-   r/   r7   r8   Z_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   Úformatr   )r-   r/   r7   ÚstateZ	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-   Zstart_statesr/   Zjoint_stateÚchangesr   r   r   r1   <  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   r(   r*   r   r,   r   r   r   Ústart_next_cycled  s   
ÿ

z ConnectionState.start_next_cycle)r&   Nr0   )r   r   r   r.   r   r   r2   r3   r6   r>   r   r<   r   r   r:   r1   rE   r   r   r   r   r%   ù   s0    

üþý
ü
ûþý
ü
(r%   N)'Útypingr   r   r   r   r   r   r   Z_eventsZ_utilr   r   Ú__all__r   r   r   r   r   r   r   r   r   r   r   r!   r"   r>   ZEventTransitionTyper;   ZConnectionClosedZDataZEndOfMessager9   ZInformationalResponser#   Ú__annotations__ZStateTransitionTyper$   r%   r   r   r   r   Ú<module>   sˆ   &p*ÿÿÿÿ	ø
üüîõ!&ÿ	ö