
    Iio                        S r SSKJr  SSKrSSKrSSKJrJrJrJ	r	  SSK
Jr  SSKJr  \(       a  SSKJr  SS jrSS	 jrSS
 jrSr " S S5      rg)zASupport for resolving hosts and options from mongodb+srv:// URIs.    )annotationsN)TYPE_CHECKINGAnyOptionalUnion)CONNECT_TIMEOUT)ConfigurationErrorresolverc                 .     SS K n g! [         a     gf = f)Nr   TF)dnsImportError)r   s    :/venv/lib/python3.13/site-packages/pymongo/srv_resolver.py_have_dnspythonr      s     s    
c                P    [        U [        5      (       a  U R                  5       $ U $ )N)
isinstancebytesdecode)texts    r   maybe_decoder   (   s     ${{}K    c                 x    SSK Jn  [        US5      (       a  UR                  " U 0 UD6$ UR                  " U 0 UD6$ )Nr   r
   resolve)r   r   hasattrr   query)argskwargsr   s      r   _resolver   /   s<    x##000>>4*6**r   zdInvalid URI host: %s is not a valid hostname for 'mongodb+srv://'. Did you mean to use 'mongodb://'?c                  l    \ rS rSr S
       SS jjrSS jrSS jr    SS jrSS jrSS jr	Sr
g	)_SrvResolver?   c                   Xl         X0l        U=(       d    [        U l        U=(       d    SU l         [
        R                  " U5        [        [        S-  5      e! [         a     Of = f U R                   R                  S5      SS  U l        O"! [         a    [        [        U4-  5      S ef = f[        U R                  5      U l        U R                  S:  a  [        [        U4-  5      eg )Nr   )zan IP address.      )_SrvResolver__fqdn_SrvResolver__srvr   _SrvResolver__connect_timeout_SrvResolver__srv_max_hosts	ipaddress
ip_addressr	   _INVALID_HOST_MSG
ValueErrorsplit_SrvResolver__plist	Exceptionlen_SrvResolver__slen)selffqdnconnect_timeoutsrv_service_namesrv_max_hostss        r   __init___SrvResolver.__init__@   s     %
!0!CO,1	  &$%69K%KLL 			L;;,,S1!"5DL 	L$%6$%@AtK	L$,,';;?$%6$%@AA s   (A 
A'&A'+#B B.c                   SSK Jn   [        U R                  SU R                  S9n[        U5      S:  a  [        S5      eSR                  U Vs/ s H  nSR                  UR                  5      PM      sn5      R                  S	5      $ ! UR
                  UR                  4 a     g [         a  n[        [        U5      5      S eS nAff = fs  snf )
Nr   r
   TXTlifetimer$   z Only one TXT record is supported   &r   zutf-8)r   r   r   r&   r(   NoAnswerNXDOMAINr0   r	   strr1   joinstringsr   )r3   r   resultsexcress        r   get_options_SrvResolver.get_optionsZ   s     	9t{{ED<R<RSG w<!$%GHH		GDGS388CKK0GDEMMgVV !!8#4#45 	 	9$SX.D8	9 Es#   B %CC)	C2CCc                     [        SU R                  -   S-   U R                  -   SU R                  S9nU$ ! [         a"  nU(       d  e [        [        U5      5      S eS nAff = f)N_z._tcp.SRVr<   )r   r'   r&   r(   r0   r	   rA   )r3   encapsulate_errorsrD   rE   s       r   _resolve_uri_SrvResolver._resolve_urih   se    		9djj 8+dkk954KaKaG   	9%$SX.D8	9s   26 
A" AA"c           	     6   U R                  U5      nU Vs/ s H1  n[        UR                  R                  SS95      UR                  4PM3     nnU HX  n US   R                  5       R                  S5      SS  U R                  * S  nU R                  U:w  d  MI  [        SUS    35      e   U R                  (       a4  [        R                  " U[        U R                  [        U5      5      5      nX$4$ s  snf ! [         a    [        SUS    35      S ef = f)NT)omit_final_dotr   r#   r$   zInvalid SRV host: )rM   r   targetto_textportlowerr.   r2   r0   r	   r/   r)   randomsampleminr1   )r3   rL   rD   rF   nodesnodenlists          r   _get_srv_response_and_hosts(_SrvResolver._get_srv_response_and_hostsu   s!    ##$67 Za
Y`RU\#**,,D,ABCHHMY` 	 

 DSQ--c2126|~F ||u$(+=d1gY)GHH  MM%T-A-A3u:)NOE~
  S(+=d1gY)GHdRSs   8C63C;;Dc                ,    U R                  S5      u  pU$ )NT)r[   )r3   rJ   rX   s      r   	get_hosts_SrvResolver.get_hosts   s    33D9r   c                p    U R                  S5      u  pUR                  nU(       a  UR                  OSnX$4$ )NFr   )r[   rrsetttl)r3   rD   rX   ra   rb   s        r   get_hosts_and_min_ttl"_SrvResolver.get_hosts_and_min_ttl   s2    99%@ eiiazr   )__connect_timeout__fqdn__plist__slen__srv__srv_max_hostsN)r   )r4   rA   r5   zOptional[float]r6   rA   r7   int)returnzOptional[str])rL   boolrl   resolver.Answer)rL   rm   rl   z-tuple[resolver.Answer, list[tuple[str, Any]]])rl   zlist[tuple[str, Any]])rl   z!tuple[list[tuple[str, Any]], int])__name__
__module____qualname____firstlineno__r8   rG   rM   r[   r^   rc   __static_attributes__ r   r   r    r    ?   sa     BB )B 	B
 B4W"&	6,r   r    )rl   rm   )r   zUnion[str, bytes]rl   rA   )r   r   r   r   rl   rn   )__doc__
__future__r   r*   rU   typingr   r   r   r   pymongo.commonr   pymongo.errorsr	   r   r   r   r   r   r,   r    rt   r   r   <module>rz      sK    H "   6 6 * -+( T Tr   