
    tni5                    v    d dl mZ d dlZd dlZddlmZ ddgZdZej	         G d d                      Z
ddZdS )    )annotationsN   )
InvalidURI	parse_uriWebSocketURIz:/?#[]@!$&'()*+,;=c                      e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
Zded<   d
Zded<   edd            Zedd            Z	d
S )r   a  
    WebSocket URI.

    Attributes:
        secure: :obj:`True` for a ``wss`` URI, :obj:`False` for a ``ws`` URI.
        host: Normalized to lower case.
        port: Always set even if it's the default.
        path: May be empty.
        query: May be empty if the URI doesn't include a query component.
        username: Available when the URI contains `User Information`_.
        password: Available when the URI contains `User Information`_.

    .. _User Information: https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.1

    boolsecurestrhostintportpathqueryNz
str | Noneusernamepasswordreturnc                P    | j         r| j         }nd}| j        r|d| j        z   z  }|S )N/?)r   r   )selfresource_names     K/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/websockets/uri.pyr   zWebSocketURI.resource_name*   s;    9 	  IMMM: 	.S4:--M    tuple[str, str] | Nonec                B    | j         d S | j        J | j         | j        fS )N)r   r   )r   s    r   	user_infozWebSocketURI.user_info4   s,    = 4}(((t}--r   )r   r   )r   r   )
__name__
__module____qualname____doc____annotations__r   r   propertyr   r    r   r   r   r      s            LLLIIIIIIIIIJJJHH   X . . . X. . .r   urir   r   c           	     v   t           j                            |           }|j        dvrt	          | d          |j        t	          | d          |j        dk    rt	          | d          |j        dk    }|j        }|j        p|rdnd	}|j        }|j	        }|j
        }|j        }||t	          | d
          	 |                     d           n# t          $ r |                    d                                          }t           j                            |t                     }t           j                            |t                     }|P|J t           j                            |t                     }t           j                            |t                     }Y nw xY wt#          |||||||          S )z
    Parse and validate a WebSocket URI.

    Args:
        uri: WebSocket URI.

    Returns:
        Parsed WebSocket URI.

    Raises:
        InvalidURI: If ``uri`` isn't a valid WebSocket URI.

    )wswsszscheme isn't ws or wssNzhostname isn't provided z"fragment identifier is meaninglessr(   i  P   z"username provided without passwordasciiidna)safe)urllibparseurlparseschemer   hostnamefragmentr   r   r   r   r   encodeUnicodeEncodeErrordecodequoteDELIMSr   )	r%   parsedr
   r   r   r   r   r   r   s	            r   r   r   <   s    \""3''F}M))67777888"BCCC]e#F?D;1&033bD;DLEHH  0BCCCA

7 	A 	A 	A {{6""))++|!!$V!44""5v"66'''|))()@@H|))()@@H	A dD%8LLLs   ;C CF#"F#)r%   r   r   r   )
__future__r   dataclassesurllib.parser.   
exceptionsr   __all__r8   	dataclassr   r   r$   r   r   <module>r@      s    " " " " " "         " " " " " " 
' 
 (. (. (. (. (. (. (. (.V/M /M /M /M /M /Mr   