+
    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resolverTc                   V ^8  d   QhRR/# )   returnbool )formats   "^/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/synchronous/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!     6 6C 63 6? 6r   c                 z    \         '       d   ^ RIHp VP                  ! V / VB # ^ RIHp VP                  ! V / VB # )r   r	   )asyncresolver)_IS_SYNCr   r
   resolver&   )r"   r#   r
   r&   s   *,  r   _resolver)   1   s9    x 000%$$d5f55r   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      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      #   TP
                  TP                  3 d     R# \         d   p\        \        T4      4      ThRp?ii ; iu up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{{ED<R<RSG w<!$%GHH		GDGS388CKK0GDEMMgVV !!8#4#45 	 	8$SX.C7	8 Es)   "B $CC.C7C8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  r   c                	     \        R V P                  ,           R,           V P                  ,           RV P                  R7      pV#   \         d$   pT'       g   h \        \        T4      4      ThRp?ii ; i)_z._tcp.SRVrL   N)r)   r8   r7   r9   rB   r   r   )rE   rY   rS   rT   s   &&  r   _resolve_uri_SrvResolver._resolve_urij   se    		8djj 8+dkk954KaKaG   	8%$SX.C7	8s   AA A3A..A3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      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# u upi   \         d   p\        RT^ ,           24      ThRp?ii ; i)T)omit_final_dotz=Invalid SRV host: return address is identical to SRV hostnamer4   r5   Nz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   sL    ##$67
 
 #**,,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s   :D5&D::E EE c                   V ^8  d   QhRR/# )r   r   zlist[tuple[str, Any]]r   )r   s   "r   r   r2      s      0 r   c                	,    V P                  R 4      w  rV# )T)rm   )rE   r[   ri   s   &  r   	get_hosts_SrvResolver.get_hosts   s    33D9r   c                   V ^8  d   QhRR/# )r   r   z!tuple[list[tuple[str, Any]], int]r   )r   s   "r   r   r2      s      'H r   c                	r    V P                  R 4      w  rVP                  pV'       d   VP                  M^ pW$3# )F)rm   rrsetttl)rE   rS   ri   ru   rv   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_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 * -6( Y Yr   