
    g9                    t    S SK Jr  S SKrS SKrS SKJr   " S S\5      rSS jr	SS jr
SS jrSS	 jrSS
 jrg)    )annotationsN)WWWScopec                      \ rS rSrSrg)ClientDisconnected	    N)__name__
__module____qualname____firstlineno____static_attributes__r       P/home/matz/Project1/venv/lib/python3.13/site-packages/uvicorn/protocols/utils.pyr   r   	   s    3r   r   c                   U R                  S5      nUbD   UR                  5       n[        U[        5      (       a  [	        US   5      [        US   5      4$ S $ U R                  S5      nUbF  [        U[        [        45      (       a+  [        U5      S:X  a  [	        US   5      [        US   5      4$ g ! [         a     g f = f)Nsocketr      peername   )	get_extra_infogetpeername
isinstancetuplestrintOSErrorlistlen	transportsocket_infoinfos      r   get_remote_addrr"      s    **84K	**,D3=dE3J3JCQL#d1g,/TPTT ##J/DJtdE];;D	QDGc$q'l++  	 	s   A B4 B4 4
C Cc                f   U R                  S5      nUbC  UR                  5       n[        U[        5      (       a  [	        US   5      [        US   5      4$ S $ U R                  S5      nUbF  [        U[        [        45      (       a+  [        U5      S:X  a  [	        US   5      [        US   5      4$ g )Nr   r   r   socknamer   )r   getsocknamer   r   r   r   r   r   r   s      r   get_local_addrr&      s    **84K&&(/9$/F/FDGc$q'l+PDP##J/DJtdE];;D	QDGc$q'l++r   c                6    [        U R                  S5      5      $ )N
sslcontext)boolr   )r   s    r   is_sslr*   )   s    	((677r   c                >    U R                  S5      nU(       d  gSU-  $ )Nclient z%s:%d)get)scoper,   s     r   get_client_addrr0   -   s!    YYx FVr   c                    [         R                  R                  U S   5      nU S   (       a#  SR                  XS   R	                  S5      5      nU$ )Npathquery_stringz{}?{}ascii)urllibparsequoteformatdecode)r/   path_with_query_strings     r   get_path_with_query_stringr;   4   sJ    #\\//f>^!(0FnH]HdHdelHm!n!!r   )r   asyncio.Transportreturnztuple[str, int] | None)r   r<   r=   r)   )r/   r   r=   r   )
__future__r   asynciourllib.parser5   uvicorn._typesr   r   r   r"   r&   r*   r0   r;   r   r   r   <module>rB      s4    "   # ' &"	8"r   