+\hTdZddlmZddlZddlZddlmZmZmZm 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)ConfigurationErrorresolverTc, ddl}y#t$rYywxYw)NrTF)dns ImportError)r s c/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pymongo/synchronous/srv_resolver.py_have_dnspythonrs s  cFt|tr|jS|S)N) isinstancebytesdecode)texts r maybe_decoder*s${{} Kctr6ddlm}t|dr|j|i|S|j |i|Sddlm}t|dr|j|i|Std)Nrr resolve) asyncresolverzWUpgrade to dnspython version >= 2.0 to use MongoClient with mongodb+srv:// connections.)_IS_SYNCr r hasattrrqueryrr )argskwargsr rs r_resolver 1su 8Y '#8##T4V4 4x~~t.v..% =) ,(=(($9&9 9 e  rzdInvalid 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!5BB5cddlm} t|jd|j}t|dkDr tddj|Dcgc]}dj|jc}jd S#|j |j f$rYyt$r}tt|dd}~wwxYwcc}w) 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  9t{{ED)r r(r'r)r2r rC)r5encapsulate_errorsrFrGs r _resolve_uriz_SrvResolver._resolve_urisse 9djj 8+dkk954KaKaG  9%$SX.D 8  9s59 AAAc z|j|}|Dcgc]3}t|jjd|jf5}}|D]}|dj }|j |k(r|jdkr td |jddd|j d}|j|k7srtd|d|jr3tj|t!|jt#|}||fScc}w#t$rtd|ddwxYw) 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_hostssP##$67  #**,,D,A BCHH M   IDAw}}H{{h&4;;?(S S s+AB/ ?||u$(+=d1gY)GHH I   MM%T-A-A3u:)NOE~)  S(+=d1gY)GHdR Ss8D"DD:c.|jd\}}|S)NT)r])r5rKrYs r get_hostsz_SrvResolver.get_hostss33D95 rcj|jd\}}|j}|r |jnd}||fS)NFr)r]rrsetttl)r5rFrYrarbs rget_hosts_and_min_ttlz"_SrvResolver.get_hosts_and_min_ttls699%@  eiiaczrN)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