
    j
                    z    d dl mZ d dlZd dlZd dlZd dlmZ  G d de          Z	dd
Z
ddZddZddZddZdS )    )annotationsN)WWWScopec                      e Zd ZdS )ClientDisconnectedN)__name__
__module____qualname__     X/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/uvicorn/protocols/utils.pyr   r   
   s          r   r   	transportasyncio.Transportreturntuple[str, int] | Nonec                   |                      d          }|g	 |                                }t          |t                    r*t	          |d                   t          |d                   fnd S # t          $ r Y d S w xY w|                      d          }|Zt          |t          t          z            r=t          |          dk    r*t	          |d                   t          |d                   fS d S )Nsocketr      peername   )	get_extra_infogetpeername
isinstancetuplestrintOSErrorlistlenr   socket_infoinfos      r   get_remote_addrr"      s    (1(@(@(J(JK	**,,D3=dE3J3JTCQLL#d1g,,//PTT 	 	 	 44	
 ##J//DJtTE\::s4yyA~~DGc$q'll++4s   AA. .
A<;A<tuple[str, int | None] | Nonec                $   |                      d          }|n|                                }t          |t                    r*t	          |d                   t          |d                   fS t          |t                    r|d fS d S |                      d          }|Zt          |t          t          z            r=t          |          dk    r*t	          |d                   t          |d                   fS t          |t                    r|d fS d S )Nr   r   r   socknamer   )r   getsocknamer   r   r   r   r   r   r   s      r   get_local_addrr'      s    (1(@(@(J(JK&&((dE"" 	0QLL#d1g,,//dC   	 $<t##J//DJtTE\::s4yyA~~DGc$q'll++$ d|4r   boolc                F    t          |                     d                    S )N
sslcontext)r(   r   )r   s    r   is_sslr+   /   s    	((66777r   scoper   r   c                >    |                      d          }|sdS d|z  S )Nclient z%s:%d)get)r,   r.   s     r   get_client_addrr1   3   s+    YYx  F rVr   c                    t           j                            | d                   }| d         r/d                    || d                             d                    }|S )Npathquery_stringz{}?{}ascii)urllibparsequoteformatdecode)r,   path_with_query_strings     r   get_path_with_query_stringr<   :   sY    #\//f>>^ o!(0FnH]HdHdelHmHm!n!n!!r   )r   r   r   r   )r   r   r   r#   )r   r   r   r(   )r,   r   r   r   )
__future__r   asyncior   urllib.parser6   uvicorn._typesr   r   r   r"   r'   r+   r1   r<   r
   r   r   <module>rA      s    " " " " " "       # # # # # # ' & & & & & & &   "   "8 8 8 8   " " " " " "r   