
    &g                        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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resolverTc                 .     SS K n g! [         a     gf = f)Nr   TF)dnsImportError)r   s    eC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/synchronous/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                     [         (       a;  SSKJn  [        US5      (       a  UR                  " U 0 UD6$ UR
                  " U 0 UD6$ SSKJn  [        US5      (       a  UR                  " U 0 UD6$ [        S5      e)Nr   r
   resolve)asyncresolverzWUpgrade to dnspython version >= 2.0 to use MongoClient with mongodb+srv:// connections.)_IS_SYNCr   r   hasattrr   queryr   r	   )argskwargsr   r   s       r   _resolver    1   sw    x 8Y''##T4V44~~t.v..%=),, (($9&99 e
 	
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	)_SrvResolverK   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      n[        U5      S:  a  USS  OUU l        O"! [         a    [        [        U4-  5      S ef = f[        U R                  5      U l        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len_SrvResolver__plist	Exception_SrvResolver__slen)selffqdnconnect_timeoutsrv_service_namesrv_max_hosts
split_fqdns         r   __init___SrvResolver.__init__L   s     %
!0!CO,1	  &$%69K%KLL 			L**3/J-0_q-@:ab>jDL 	L$%6$%@AtK	L$,,'s   (A 
A'&A'+6B" "C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NXDOMAINr3   r	   strr1   joinstringsr   )r5   r   resultsexcress        r   get_options_SrvResolver.get_optionsd   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*   r3   r	   rD   )r5   encapsulate_errorsrG   rH   s       r   _resolve_uri_SrvResolver._resolve_urir   se    		9djj 8+dkk954KaKaG   	9%$SX.D8	9s   26 
A" AA"c           	        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 H  nU R
                  US   R                  5       :X  a  [        S5      e US   R                  5       R                  S5      SS  U R                  * S  nU R                  U:w  d  Mu  [        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   z=Invalid SRV host: return address is identical to SRV hostnamer%   r'   zInvalid SRV host: )rP   r   targetto_textportr(   lowerr	   r0   r4   r3   r2   r+   randomsampleminr1   )r5   rO   rG   rI   nodesnodenlists          r   _get_srv_response_and_hosts(_SrvResolver._get_srv_response_and_hosts   sG    ##$67
 
 #**,,D,ABCHHM 	 
 D{{d1gmmo-(S SQ--c2126|~F ||u$(+=d1gY)GHH  MM%T-A-A3u:)NOE~'
  S(+=d1gY)GHdRSs   8D"3D''Ec                ,    U R                  S5      u  pU$ )NT)r^   )r5   rM   r[   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)r5   rG   r[   rd   re   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   )r6   rD   r7   zOptional[float]r8   rD   r9   int)returnzOptional[str])rO   boolro   resolver.Answer)rO   rp   ro   z-tuple[resolver.Answer, list[tuple[str, Any]]])ro   zlist[tuple[str, Any]])ro   z!tuple[list[tuple[str, Any]], int])__name__
__module____qualname____firstlineno__r;   rJ   rP   r^   ra   rf   __static_attributes__ r   r   r"   r"   K   s\     (( )( 	(
 (0W"&	66r   r"   )ro   rp   )r   zUnion[str, bytes]ro   rD   )r   r   r   r   ro   rq   )__doc__
__future__r   r,   rX   typingr   r   r   r   pymongo.commonr   pymongo.errorsr	   r   r   r   r   r   r    r.   r"   rw   r   r   <module>r}      sP    H "   6 6 * -
*( W Wr   