
    9h+                        S SK Jr  S SKrS SKrS SKrSSKJrJr  SS/r	Sr
\R                   " S S5      5       rSS	 jr\R                   " S
 S5      5       rSS jrSS jrg)    )annotationsN   )InvalidProxy
InvalidURI	parse_uriWebSocketURIz:/?#[]@!$&'()*+,;=c                      \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S\S
'   SrS\S'   SrS\S'   \SS j5       r	\SS j5       r
Srg)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queryN
str | Noneusernamepasswordc                    U R                   (       a  U R                   nOSnU R                  (       a  USU R                  -   -  nU$ )N/?)r   r   )selfresource_names     SC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\websockets/uri.pyr   WebSocketURI.resource_name+   s7    99 IIMM::S4::--M    c                l    U R                   c  g U R                  c   eU R                   U R                  4$ Nr   r   r   s    r   	user_infoWebSocketURI.user_info5   2    == }}(((t}}--r    )returnr   r&   ztuple[str, str] | None)__name__
__module____qualname____firstlineno____doc____annotations__r   r   propertyr   r"   __static_attributes__r%   r   r   r   r      s\      L
I
I
IJHjHj  . .r   c           	        [         R                  R                  U 5      nUR                  S;  a  [	        U S5      eUR
                  c  [	        U S5      eUR                  S:w  a  [	        U S5      eUR                  S:H  nUR
                  nUR                  =(       d    U(       a  SOSnUR                  nUR                  nUR                  nUR                  nUb  Uc  [	        U S	5      e U R                  S
5        [#        X#XEXgU5      $ ! [         a    UR                  S5      R                  5       n[         R                  R                  U[         S9n[         R                  R                  U[         S9nUbI  Uc   e[         R                  R                  U[         S9n[         R                  R                  U[         S9n Nf = f)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 wsshostname isn't provided z"fragment identifier is meaninglessr2     P   "username provided without passwordasciiidnasafe)urllibparseurlparseschemer   hostnamefragmentr   r   r   r   r   encodeUnicodeEncodeErrordecodequoteDELIMSr   )	uriparsedr   r   r   r   r   r   r   s	            r   r   r   =   s    \\""3'F}}M)677788"BCC]]e#F??D;;1&3bD;;DLLEHH  0BCCA

7 d%8LL  	A {{6"))+||!!$V!4""5v"6'''||))()@H||))()@H	As   -D B9GGc                  h    \ rS rSr% SrS\S'   S\S'   S\S'   SrS	\S
'   SrS	\S'   \SS j5       r	Sr
g)Proxyo   a  
Proxy.

Attributes:
    scheme: ``"socks5h"``, ``"socks5"``, ``"socks4a"``, ``"socks4"``,
        ``"https"``, or ``"http"``.
    host: Normalized to lower case.
    port: Always set even if it's the default.
    username: Available when the proxy address contains `User Information`_.
    password: Available when the proxy address contains `User Information`_.

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

r   r?   r   r   r   Nr   r   r   c                l    U R                   c  g U R                  c   eU R                   U R                  4$ r   r    r!   s    r   r"   Proxy.user_info   r$   r   r%   r'   )r(   r)   r*   r+   r,   r-   r   r   r.   r"   r/   r%   r   r   rJ   rJ   o   s>     K
I
IHjHj. .r   rJ   c                t   [         R                  R                  U 5      nUR                  S;  a  [	        U SUR                   S35      eUR
                  c  [	        U S5      eUR                  S;  a  [	        U S5      eUR                  S:w  a  [	        U S5      eUR                  S:w  a  [	        U S	5      eUR                  nUR
                  nUR                  =(       d    UR                  S
:X  a  SOSnUR                  nUR                  nUb  Uc  [	        U S5      e U R                  S5        [#        X#XEU5      $ ! [         an    UR                  S5      R                  5       nUbI  Uc   e[         R                  R                  U[         S9n[         R                  R                  U[         S9n Nf = f)z
Parse and validate a proxy.

Args:
    proxy: proxy.

Returns:
    Parsed proxy.

Raises:
    InvalidProxy: If ``proxy`` isn't a valid proxy.

)socks5hsocks5socks4asocks4httpshttpzscheme z isn't supportedr3   )r4   r   zpath is meaninglessr4   zquery is meaninglesszfragment is meaninglessrS   r5   r6   r7   r8   r9   r:   )r<   r=   r>   r?   r   r@   r   r   rA   r   r   r   rB   rC   rD   rE   rF   rJ   )proxyrH   r?   r   r   r   r   s          r   parse_proxyrV      s    \\""5)F}}WW5GFMM?:J"KLL5";<<{{)#5"788||r5"899"5";<<]]F??D;;C&--7":3DHH  05"FGG	AW tx88  A {{6"))+'''||))()@H||))()@HAs   !D? ?A5F76F7c                z   [         R                  R                  U R                   SU R                   35      (       a  g[         R                  R                  5       nU R                  (       a  / SQnO/ SQnU H?  nUR                  U5      nUc  M  US:X  a  UR                  S5      (       a  SUSS -   nUs  $    g)	zM
Return the proxy to use for connecting to the given WebSocket URI, if any.

:N)r2   socksrS   )r1   rY   rS   rT   rY   zhttp://z
socks5h://   )	r<   requestproxy_bypassr   r   
getproxiesr   get
startswith)rG   proxiesschemesr?   rU   s        r   	get_proxyrb      s    
 ~~""chhZq
#;<< nn'')G
zz+2F# U%5%5i%@%@$uQRy0L  r   )rG   r   r&   r   )rU   r   r&   rJ   )rG   r   r&   r   )
__future__r   dataclassesurllib.parser<   urllib.request
exceptionsr   r   __all__rF   	dataclassr   r   rJ   rV   rb   r%   r   r   <module>rj      sx    "    0 
' 
 (. (. (.V/Md . . .</9d!r   