+\hdZddlmZddlZddlZddlmZmZmZm Z ddl m Z ddl m Z erddlmZdZdd Zdd Zdd Zd ZGd dZy)zASupport for resolving hosts and options from mongodb+srv:// URIs.) annotationsN) TYPE_CHECKINGAnyOptionalUnion)CONNECT_TIMEOUT)ConfigurationErrorresolverFc, ddl}y#t$rYywxYw)NrTF)dns ImportError)r s d/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pymongo/asynchronous/srv_resolver.py_have_dnspythonrs s  cFt|tr|jS|S)N) isinstancebytesdecode)texts r maybe_decoder*s${{} KcKtr6ddlm}t|dr|j|i|S|j |i|Sddlm}t|dr|j|i|d{Std7w)Nrr resolve) asyncresolverz\Upgrade to dnspython version >= 2.0 to use AsyncMongoClient with mongodb+srv:// connections.)_IS_SYNCr r hasattrrqueryrr )argskwargsr rs r_resolver 1s 8Y '#8##T4V4 4x~~t.v..% =) ,...??? ? j  @sA$A8&A6'A8zdInvalid URI host: %s is not a valid hostname for 'mongodb+srv://'. Did you mean to use 'mongodb://'?cVeZdZ d d dZd dZd dZ d dZd dZddZy) _SrvResolverc||_||_|xst|_|xsd|_ t j |ttdz#t$rYnwxYw |jjd}t|dkDr|ddn||_ n!#t$rtt|fzdwxYwt|j|_t||_y)Nr)z an IP address.)_SrvResolver__fqdn_SrvResolver__srvr_SrvResolver__connect_timeout_SrvResolver__srv_max_hosts ipaddress ip_addressr _INVALID_HOST_MSG ValueErrorsplitlen_SrvResolver__plist Exception_SrvResolver__slennparts)selffqdnconnect_timeoutsrv_service_name srv_max_hosts split_fqdns r__init__z_SrvResolver.__init__Ls % !0!CO,1    &$%69K%KL L    L**3/J-0_q-@:ab>jDL L$%6$%@At K L$,,' *o s'A AA!5BB5cKddlm} t|jd|jd{}t|dkDr tddj|Dcgc]}dj|jc}jd S7d#|j |j f$rYyt$r}tt|dd}~wwxYwcc}ww) Nrr TXTlifetimer&z Only one TXT record is supported&rzutf-8)r r r r'r)NoAnswerNXDOMAINr2r strr0joinstringsr)r5r resultsexcress r get_optionsz_SrvResolver.get_optionses  9$T[[%$BXBXYYG wCBC1C3C;CCCcK td|jzdz|jzd|jd{}|S7#t$r}|st t |dd}~wwxYww)N_z._tcp.SRVr>)r r(r'r)r2r rC)r5encapsulate_errorsrFrGs r _resolve_uriz_SrvResolver._resolve_urissr 9$djj 8+dkk954KaKaG 9%$SX.D 8  9s8A.8AAAA.A A+A&&A++A.c K|j|d{}|Dcgc]3}t|jjd|jf5}}|D]}|dj }|j |k(r|jdkr td |jddd|j d}|j|k7srtd|d|jr3tj|t!|jt#|}||fS7 cc}w#t$rtd|ddwxYww) NT)omit_final_dotrz=Invalid SRV host: return address is identical to SRV hostnamer$r&zInvalid SRV host: )rNrtargetto_textportlowerr'r4r r/r3r2r1r*randomsampleminr0)r5rMrFrHnodesnodesrv_hostnlists r_get_srv_response_and_hostsz(_SrvResolver._get_srv_response_and_hostss[))*<==  #**,,D,A BCHH M   IDAw}}H{{h&4;;?(S S s+AB/ ?||u$(+=d1gY)GHH I   MM%T-A-A3u:)NOE~/>  S(+=d1gY)GHdR Ss@E D#E 8D&AE "D+>E AE &E +EE cJK|jdd{\}}|S7 w)NT)r])r5rKrYs r get_hostsz_SrvResolver.get_hostss(99$??5 @s #! #cK|jdd{\}}|j}|r |jnd}||fS7'w)NFr)r]rrsetttl)r5rFrYrarbs rget_hosts_and_min_ttlz"_SrvResolver.get_hosts_and_min_ttlsC#??FF  eiiaczGsA?(AN)r)r6rCr7zOptional[float]r8rCr9int)returnz Optional[str])rMboolreresolver.Answer)rMrfrez-tuple[resolver.Answer, list[tuple[str, Any]]])rezlist[tuple[str, Any]])rez!tuple[list[tuple[str, Any]], int]) __name__ __module__ __qualname__r;rIrNr]r_rcrrr"r"Ks\  &&)& &  &2 W "& 68rr")rerf)rzUnion[str, bytes]rerC)rrrrrerg)__doc__ __future__rr+rVtypingrrrrpymongo.commonrpymongo.errorsr r r rrrr r-r"rkrrrqsPH" 66*-  *( YYr