
    vgS                        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dS )    )annotations)Sequence   )Frame)ExtensionNameExtensionParameter)	ExtensionClientExtensionFactoryServerExtensionFactoryc                  6    e Zd ZU dZded<   	 ddddZddZdS )r	   z%
    Base class for extensions.

    r   nameN)max_sizeframer   r   
int | Nonereturnc                   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)selfr   r   s      W/var/www/pixelcanvas.ch/venv/lib/python3.11/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   r   r   r   )r   r   r   r   )__name__
__module____qualname____doc____annotations__r   r    r   r   r	   r	      sf          
 =A " " " " " """ " " " " "r   r	   c                  0    e Zd ZU dZded<   	 ddZddZdS )r
   z:
    Base class for client-side extension factories.

    r   r   r   list[ExtensionParameter]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   paramsSequence[ExtensionParameter]accepted_extensionsSequence[Extension]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   r%   r'   s      r   process_response_paramsz.ClientExtensionFactory.process_response_paramsG   s
    & "!r   N)r   r"   )r%   r&   r'   r(   r   r	   )r   r   r   r   r   r$   r+   r    r   r   r
   r
   4   sY          
 " " " "" " " " " "r   r
   c                  (    e Zd ZU dZded<   	 dd
ZdS )r   z:
    Base class for server-side extension factories.

    r   r   r%   r&   r'   r(   r   *tuple[list[ExtensionParameter], Extension]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   r-   )r   r   r   r   r   r/   r    r   r   r   r   ]   sE          
 " " " " " "r   r   N)
__future__r   collections.abcr   framesr   typingr   r   __all__r	   r
   r   r    r   r   <module>r5      s    " " " " " " $ $ $ $ $ $       6 6 6 6 6 6 6 6 L
K
K%" %" %" %" %" %" %" %"P&" &" &" &" &" &" &" &"R" " " " " " " " " "r   