+
    8i/                        R t ^ RIHt ^ RIt^ RIt^ RIHtHtHtH	t	 ^ RI
Ht ^ RIHt ]'       d   ^ RIHt RtR R	 ltR
 R ltR R ltRt ! R R4      tR# )zASupport for resolving hosts and options from mongodb+srv:// URIs.)annotationsN)TYPE_CHECKINGAnyOptionalUnion)CONNECT_TIMEOUT)ConfigurationErrorresolverFc                   V ^8  d   QhRR/# )   returnbool )formats   "_/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/asynchronous/srv_resolver.py__annotate__r      s           c                 4     ^ RI p R#   \         d     R# i ; i)    NTF)dnsImportError)r   s    r   _have_dnspythonr      s     s    c                    V ^8  d   QhRRRR/# )r   textzUnion[str, bytes]r   strr   )r   s   "r   r   r   *   s      ( S r   c                R    \        V \        4      '       d   V P                  4       # V # )N)
isinstancebytesdecode)r   s   &r   maybe_decoder    *   s     ${{}Kr   c               $    V ^8  d   QhRRRRRR/# )r   argsr   kwargsr   resolver.Answerr   )r   s   "r   r   r   1   s!     < <# < < <r   c                    "   \         '       d   ^ RIHp VP                  ! V / VB # ^ RIHp VP                  ! V / VB G Rj  xL
 #  L5i)r   r	   )asyncresolverN)_IS_SYNCr   r
   resolver&   )r"   r#   r
   r&   s   *,  r   _resolver)   1   sB     x 000%"**D;F;;;;s   A A	AA	zdInvalid URI host: %s is not a valid hostname for 'mongodb+srv://'. Did you mean to use 'mongodb://'?c                  b    ] tR t^BtRR R lltR R ltR R ltR R ltR	 R
 ltR R lt	Rt
R# )_SrvResolverc               (    V ^8  d   QhRRRRRRRR/# )r   fqdnr   connect_timeoutzOptional[float]srv_service_namesrv_max_hostsintr   )r   s   "r   r   _SrvResolver.__annotate__C   s2     & && )& 	&
 &r   c                	   Wn         W0n        T;'       g    \        V n        T;'       g    ^ V n         \
        P                  ! V4       \        \        R,          4      h  \         d     Mi ; i T P                   P                  R4      p\        T4      ^8  d
   TR,          MTT n        M'  \         d    \        \        T3,          4      Rhi ; i\        T P                  4      T n        \        T4      T n        R# )r   .   NNN)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nparts)selfr-   r.   r/   r0   
split_fqdns   &&&&& r   __init___SrvResolver.__init__C   s     %
!0!C!CO,11	  &$%69K%KLL 			L**3/J-0_q-@:b>jDL 	L$%6$%@AtK	L$,,'*os   ,A   A.-A.2;B. .$Cc                   V ^8  d   QhRR/# )r   r   zOptional[str]r   )r   s   "r   r   r2   \   s     W W= Wr   c                	  "   ^ RI Hp  \        V P                  RV P                  R7      G Rj  xL
 p\        T4      ^8  d   \        R4      hRP                  T Uu. uF  pRP                  TP                  4      NK   	  up4      P                  R4      #  Lh  TP
                  TP                  3 d     R# \         d   p\        \        T4      4      ThRp?ii ; iu upi 5i)	r   r	   TXTlifetimeNz Only one TXT record is supported   &r   zutf-8)r   r
   r)   r7   r9   NoAnswerNXDOMAINrB   r   r   r@   joinstringsr   )rE   r
   resultsexcress   &    r   get_options_SrvResolver.get_options\   s      	8$T[[%$BXBXYYG w<!$%GHH		GDGS388CKK0GDEMMgVV Z!!8#4#45 	 	8$SX.C7	8 EsU   C&%B BB *C&$C!C&B C7C&:CCCCC&c                    V ^8  d   QhRRRR/# )r   encapsulate_errorsr   r   r$   r   )r   s   "r   r   r2   j   s      T o r   c                	  "    \        R V P                  ,           R,           V P                  ,           RV P                  R7      G Rj  xL
 pV#  L  \         d$   pT'       g   h \        \        T4      4      ThRp?ii ; i5i)_z._tcp.SRVrL   N)r)   r8   r7   r9   rB   r   r   )rE   rY   rS   rT   s   &&  r   _resolve_uri_SrvResolver._resolve_urij   sq     		8$djj 8+dkk954KaKa G   	8%$SX.C7	8s;   BAA A	A BA A?A::A??Bc                    V ^8  d   QhRRRR/# )r   rY   r   r   z-tuple[resolver.Answer, list[tuple[str, Any]]]r   )r   s   "r   r   r2   w   s      "&	6r   c           	     	  "   V P                  V4      G R j  xL
 pV Uu. uF4  p\        VP                  P                  RR7      4      VP                  3NK6  	  ppV F  pV^ ,          P                  4       pV P                  V8X  d   V P                  ^8  d   \        R4      h VP                  R4      R,          V P                  ) R  pT P                  T8w  g   K  \        RT^ ,           24      h	  V P                  '       d5   \        P                  ! V\!        V P                  \#        V4      4      4      pW$3#  EL(u upi   \         d   p\        RT^ ,           24      ThR p?ii ; i5i)NT)omit_final_dotz=Invalid SRV host: return address is identical to SRV hostnamer4   r5   zInvalid SRV host: )r]   r    targetto_textportlowerr7   rD   r   r?   rC   rB   rA   r:   randomsampleminr@   )	rE   rY   rS   rU   nodesnodesrv_hostnlistrT   s	   &&       r   _get_srv_response_and_hosts(_SrvResolver._get_srv_response_and_hostsw   sV     ))*<==
 
 #**,,D,ABCHHM 	 
 DAw}}H{{h&4;;?(S R s+B/? ||u$(+=d1gY)GHH  MM%T-A-A3u:)NOE~/ >
  R(+=d1gY)GHcQRsQ   E0D?E0:EAE0&&EE0(E08E0E0E-E((E--E0c                   V ^8  d   QhRR/# )r   r   zlist[tuple[str, Any]]r   )r   s   "r   r   r2      s      !6 r   c                	H   "   V P                  R 4      G Rj  xL
 w  rV#  L5i)TN)rm   )rE   r[   ri   s   &  r   	get_hosts_SrvResolver.get_hosts   s%     99$?? @s   " 	"c                   V ^8  d   QhRR/# )r   r   z!tuple[list[tuple[str, Any]], int]r   )r   s   "r   r   r2      s      -N r   c                	   "   V P                  R 4      G Rj  xL
 w  rVP                  pV'       d   VP                  M^ pW$3#  L+5i)FN)rm   rrsetttl)rE   rS   ri   ru   rv   s   &    r   get_hosts_and_min_ttl"_SrvResolver.get_hosts_and_min_ttl   s>     #??FF eiiaz Gs   AA,A)__connect_timeout__fqdn__plist__slen__srv__srv_max_hostsrD   N)r   )__name__
__module____qualname____firstlineno__rG   rV   r]   rm   rq   rw   __static_attributes__r   r   r   r+   r+   B   s&    &2W8 r   r+   )__doc__
__future__r   r;   rf   typingr   r   r   r   pymongo.commonr   pymongo.errorsr   r   r
   r'   r   r    r)   r=   r+   r   r   r   <module>r      sP    H "   6 6 * -<( Y Yr   