
    i                         U d dl Z d dlmZ d dlmZmZmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZ d	ee   fd
ZdZ eeeeeeeeeed	      Zeeedef   f   ed<   dedefdZy)    N)MappingProxyType)CallableMappingOptional)ParseResultparse_qsunquoteurlparse)ConnectKwargs)SSLConnection)UnixDomainSocketConnection)r   r   returnc                 v    | | dk(  ry t        | t              r| j                         t        v ryt	        |       S )N F)
isinstancestrupperFALSE_STRINGSbool)values    M/root/searxng-venv/lib/python3.12/site-packages/valkey/_parsers/url_parser.pyto_boolr      s4    }%%++-="@;    )0FFALSENNO)	dbsocket_timeoutsocket_connect_timeoutsocket_keepaliveretry_on_timeoutmax_connectionshealth_check_intervalssl_check_hostnametimeout.URL_QUERY_ARGUMENT_PARSERSurlasync_connectionc           	      (   g d}t        |       }i }| j                         }t        j                  ddj	                  t        t        j                  |            z   dz         }|j                  |      s|j                  d      st        d|       t        |j                        j                         D ]N  \  }}|s	t        |      dkD  st        |d         }	t        j!                  |      }
|
r	  |
|	      ||<   J|	||<   P |j$                  rt        |j$                        |d
<   |j&                  rt        |j&                        |d<   |j(                  dk(  r7|j*                  rt        |j*                        |d<   |rt,        nt.        |d<   |S |j(                  |v r|j0                  rt        |j0                        |d<   |j2                  rt5        |j2                        |d<   |j*                  r6d|vr2	 t5        t        |j*                        j7                  dd            |d<   |j(                  dv r|rt:        nt<        |d<   |S t        d|       # t"        t        f$ r t        d| d	      w xY w# t8        t        f$ r Y bw xY w)N)valkeyvalkeysredisredissunixz^(?:|z)://zunix:z5Valkey URL must specify one of the following schemes r   zInvalid value for `z` in connection URL.usernamepasswordr0   pathconnection_classhostportr   /r   )r-   r/   )r
   lowerrecompilejoinmapescapematch
startswith
ValueErrorr   queryitemslenr	   r(   get	TypeErrorr2   r3   schemer4   UnixDomainSocketConnectionAsyncr   hostnamer7   intreplaceAttributeErrorSSLConnectionAsyncr   )r)   r*   supported_schemesparsedkwargs	lower_urlpatternname
value_listr   parsers              r   	parse_urlrV   )   s{   H"3-FF		Ijj#((3ryy*;<==GG ==#I,@,@,ICDUCVW
 	
 %V\\288: 
%j#j/A-JqM*E/33D9FW#)%=F4L  %t
% $V__5z$V__5z }};;$V[[1F6N   ,+ 	!": M/ 
+	+??$V__5F6N;; -F6N ;;4v-"76;;#7#?#?R#HIt ==11&6"M %& M	 CDUCVW
 	
O ":. W$':4&@T%UVVW> #J/ s   5I=1I? I<?JJ)r:   typesr   typingr   r   r   urllib.parser   r   r	   r
   valkey.asyncio.connectionr   r   rM   r   rH   valkey.connectionr   r   r   rJ   floatr(   r   object__annotations__rV    r   r   <module>r`      s    	 " . . A A J Hhtn  /BR"'##!$%
C GC#v+)>$>? ?3 ?$ ?r   