
    i                    F    d dl mZ ddlmZ ddlmZ  G d de          ZdS )	    )annotations   )HttpVersion   )ExtensionFromHTTPc                      e Zd ZdZedd            ZddZdd
Zedd            Zedd            Z	edd            Z
ddZddZdS )RawExtensionFromHTTPzERaw I/O from given HTTP stream after a 101 Switching Protocol Status.returnset[HttpVersion]c                 H    t           j        t           j        t           j        hS N)r   h11h2h3     c/root/projects/butler/venv/lib/python3.11/site-packages/urllib3_future/contrib/webextensions/raw.pysupported_svnz"RawExtensionFromHTTP.supported_svn
   s    @@r   http_versionr   dict[str, str]c                    i S )zHSpecific HTTP headers required (request) before the 101 status response.r   )selfr   s     r   headerszRawExtensionFromHTTP.headers   s    	r   Nonec                   | j         L|                                 5  | j                                          ddd           n# 1 swxY w Y   d| _         | j         | j                                         d| _        d| _        dS )z"End/Notify close for sub protocol.N)_dsa_write_error_catcherclose	_response_police_officer)r   s    r   r   zRawExtensionFromHTTP.close   s    9 **,, " "	!!!" " " " " " " " " " " " " " "DI>%N  """!DN#s   AA	Astrc                     dS )Nrawr   r   r   r   implementationz#RawExtensionFromHTTP.implementation   s    ur   set[str]c                     t                      S r   )setr   r   r   supported_schemesz&RawExtensionFromHTTP.supported_schemes!   s    uur   schemec                    | S r   r   )r)   s    r   scheme_to_http_schemez*RawExtensionFromHTTP.scheme_to_http_scheme%   s    r   bytes | Nonec                F   | j         | j        t          d          | j                             | j                  5  |                                 5  | j                            d           \  }}}d d d            n# 1 swxY w Y   |cd d d            S # 1 swxY w Y   d S Nz-The HTTP extension is closed or uninitialized)r    r   OSErrorborrowr   _read_error_catcherrecv_extended)r   dataeot_s       r   next_payloadz!RawExtensionFromHTTP.next_payload)   s#   '49+<IJJJ!((88 	 	))++ = =#y66t<<c1= = = = = = = = = = = = = = =	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   BA=1B=B	BB	BBBbufstr | bytesc                   | j         | j        t          d          t          |t                    r|                                }| j                             | j                  5  |                                 5  | j        	                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r.   )
r    r   r/   
isinstancer!   encoder0   r   r   sendall)r   r7   s     r   send_payloadz!RawExtensionFromHTTP.send_payload1   s:   '49+<IJJJc3 	**,,C!((88 	' 	'**,, ' '	!!#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's6   &B:;B"B:"B&	&B:)B&	*B::B>B>N)r
   r   )r   r   r
   r   )r
   r   )r
   r!   )r
   r%   )r)   r!   r
   r!   )r
   r,   )r7   r8   r
   r   )__name__
__module____qualname____doc__staticmethodr   r   r   r$   r(   r+   r6   r=   r   r   r   r	   r	      s        OOA A A \A   	$ 	$ 	$ 	$    \    \    \   	' 	' 	' 	' 	' 	'r   r	   N)
__future__r   backendr   protocolr   r	   r   r   r   <module>rF      sp    " " " " " " " " " " " " ' ' ' ' ' '3' 3' 3' 3' 3', 3' 3' 3' 3' 3'r   