
    ,hW                    |    d dl mZ d dlmZ ddlmZ ddlmZmZ g dZ	 G d d      Z
 G d	 d
      Z G d d      Zy)    )annotations)Sequence   )Frame)ExtensionNameExtensionParameter)	ExtensionClientExtensionFactoryServerExtensionFactoryc                  4    e Zd ZU dZded<   	 ddddZd	dZy)
r	   z%
    Base class for extensions.

    r   nameN)max_sizec                   t         )a  
        Decode an incoming frame.

        Args:
            frame: Incoming frame.
            max_size: Maximum payload size in bytes.

        Returns:
            Decoded frame.

        Raises:
            PayloadTooBig: If decoding the payload exceeds ``max_size``.

        NotImplementedError)selfframer   s      \/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/websockets/extensions/base.pydecodezExtension.decode   s
     "!    c                    t         )z
        Encode an outgoing frame.

        Args:
            frame: Outgoing frame.

        Returns:
            Encoded frame.

        r   )r   r   s     r   encodezExtension.encode&   s
     "!r   )r   r   r   z
int | Nonereturnr   )r   r   r   r   )__name__
__module____qualname____doc____annotations__r   r    r   r   r	   r	      s    
 =A """r   r	   c                  :    e Zd ZU dZded<   	 ddZ	 	 	 	 	 	 ddZy)	r
   z:
    Base class for client-side extension factories.

    r   r   c                    t         )z
        Build parameters to send to the server for this extension.

        Returns:
            Parameters to send to the server.

        r   )r   s    r   get_request_paramsz)ClientExtensionFactory.get_request_params=   s
     "!r   c                    t         )ah  
        Process parameters received from the server.

        Args:
            params: Parameters received from the server for this extension.
            accepted_extensions: List of previously accepted extensions.

        Returns:
            An extension instance.

        Raises:
            NegotiationError: If parameters aren't acceptable.

        r   r   paramsaccepted_extensionss      r   process_response_paramsz.ClientExtensionFactory.process_response_paramsG   s
    & "!r   N)r   Sequence[ExtensionParameter])r%   r(   r&   Sequence[Extension]r   r	   )r   r   r   r   r   r"   r'   r   r   r   r
   r
   4   s8    
 ""," 1" 
	"r   r
   c                  2    e Zd ZU dZded<   	 	 	 	 	 	 	 ddZy)r   z:
    Base class for server-side extension factories.

    r   r   c                    t         )a  
        Process parameters received from the client.

        Args:
            params: Parameters received from the client for this extension.
            accepted_extensions: List of previously accepted extensions.

        Returns:
            To accept the offer, parameters to send to the client for this
            extension and an extension instance.

        Raises:
            NegotiationError: To reject the offer, if parameters received from
                the client aren't acceptable.

        r   r$   s      r   process_request_paramsz-ServerExtensionFactory.process_request_paramsf   s
    * "!r   N)r%   r(   r&   r)   r   z*tuple[list[ExtensionParameter], Extension])r   r   r   r   r   r,   r   r   r   r   r   ]   s3    
 "," 1" 
4	"r   r   N)
__future__r   collections.abcr   framesr   typingr   r   __all__r	   r
   r   r   r   r   <module>r2      s9    " $  6 L%" %"P&" &"R" "r   