+
    8i                        R t ^ RIHt ^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
HtHt ^ RIHtHt ^ RIHtHtHtHtHtHtHtHtHtHt Rt]R	RR	R
R
R
3R R llt]R	RR	R
R
R
3R R lltR
# )z*Tools to parse and validate a MongoDB URI.)annotations)AnyOptional)unquote_plus)_SrvResolver)SRV_SERVICE_NAME_CaseInsensitiveDictionary)ConfigurationError
InvalidURI)
_ALLOWED_TXT_OPTSDEFAULT_PORTSCHEME
SCHEME_LENSRV_SCHEME_LEN_check_options_make_options_case_sensitive_validate_urisplit_hostssplit_optionsFTNc               <    V ^8  d   QhRRRRRRRRRRR	R
RRRRRR/	#    uristrdefault_portzOptional[int]validateboolwarn	normalizeconnect_timeoutzOptional[float]srv_service_namezOptional[str]srv_max_hostsreturnzdict[str, Any] )formats   "]/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/asynchronous/uri_parser.py__annotate__r&   )   sm     P P	PP P 	P
 P %P $P !P P    c                   "   \        WW#WG4      pTP                  \        V VVVVVVV4      G Rj  xL
 4       \        VR,          4      VR&   V#  L5i)a  Parse and validate a MongoDB URI.

Returns a dict of the form::

    {
        'nodelist': <list of (host, port) tuples>,
        'username': <username> or None,
        'password': <password> or None,
        'database': <database name> or None,
        'collection': <collection name> or None,
        'options': <dict of MongoDB URI options>,
        'fqdn': <fqdn of the MongoDB+SRV URI> or None
    }

If the URI scheme is "mongodb+srv://" DNS SRV and TXT lookups will be done
to build nodelist and options.

:param uri: The MongoDB URI to parse.
:param default_port: The port number to use when one wasn't specified
      for a host in the URI.
:param validate: If ``True`` (the default), validate and
      normalize all options. Default: ``True``.
:param warn: When validating, if ``True`` then will warn
      the user then ignore any invalid options or values. If ``False``,
      validation will error when options are unsupported or values are
      invalid. Default: ``False``.
:param normalize: If ``True``, convert names of URI options
      to their internally-used names. Default: ``True``.
:param connect_timeout: The maximum time in milliseconds to
      wait for a response from the DNS server.
:param srv_service_name: A custom SRV service name

.. versionchanged:: 4.14
   ``options`` is now type ``dict`` as opposed to a ``_CaseInsensitiveDictionary``.

.. versionchanged:: 4.6
   The delimiting slash (``/``) between hosts and connection options is now optional.
   For example, "mongodb://example.com?tls=true" is now a valid URI.

.. versionchanged:: 4.0
   To better follow RFC 3986, unquoted percent signs ("%") are no longer
   supported.

.. versionchanged:: 3.9
    Added the ``normalize`` parameter.

.. versionchanged:: 3.6
    Added support for mongodb+srv:// URIs.

.. versionchanged:: 3.5
    Return the original value of the ``readPreference`` MongoDB URI option
    instead of the validated read preference mode.

.. versionchanged:: 3.1
    ``warn`` added so invalid options can be ignored.
Noptions)r   update
_parse_srvr   )	r   r   r   r   r   r   r    r!   results	   &&&&&&&& r%   	parse_urir-   )   sg     D 3hiWF
MM	
 		
 5VI5FGF9M		
s   .AA Ac               <    V ^8  d   QhRRRRRRRRRRR	R
RRRRRR/	# r   r#   )r$   s   "r%   r&   r&   |   sm     E E	EE E 	E
 E %E $E !E Er'   c                  "   V P                  \        4      '       d   R pV \        R p	MRpV \        R p	\	        4       p
V	P                  R4      w  rpRV9   d   VP                  R4      w  p pMTpV'       d   V
P                  \        WW44      4       Vf   V
P                  R\        4      pRV9   d   VP                  R4      w   rMTp\        V4      pT;'       g    V
P                  R4      pV'       EdH   \        VRR7      pV^ ,          w  ppT;'       g    V
P                  R	4      p\        VWVV4      pVP                  4       G Rj  xL
 pVP                  4       G Rj  xL
 pV'       d]   \        VW#V4      p\!        V4      \"        ,
          '       d   \%        R
4      hVP'                  4        F  w  ppVV
9  g   K  VV
V&   K  	  V
P                  R4      '       d   V'       d   \)        R4      hV
P                  R4      '       d   V'       d   \)        R4      hRV
9  d   RV
9  d   V'       d   RMRV
R&   M\        WR7      p\+        VV
4       RVRV
/#  EL L5i)FNT?/srvServiceName@srvMaxHosts)r   connectTimeoutMSzDOnly authSource, replicaSet, and loadBalanced are supported from DNSloadBalancedz0You cannot specify loadBalanced with srvMaxHosts
replicaSetz.You cannot specify replicaSet with srvMaxHoststlsssltruenodelistr)   )
startswithr   r   r   r   	partitionr*   r   getr   
rpartitionr   r   r   	get_hostsget_optionssetr   r	   itemsr
   r   )r   r   r   r   r   r   r    r!   is_srvscheme_freer)   host_plus_db_part_opts	host_parthostsnodesfqdnportdns_resolverdns_optionsparsed_dns_optionsoptvals   &&&&&&&&                r%   r+   r+   |   s<     ~~f*+&./*(*G!,!6!6s!;$
+55c:	1a%	}TTEF";;'79IJ
i**3/1eE!??W[[%?MvE51X
d *LLW[[9K-L#D/][",,..(4466!.{HI!V%&):::(Z  /446Sg%#&GCL 7 ;;~&&=OPP;;|$$MNNE$8%-T6GENE=5'" 	E7 - /6sh   A7I&:A&I&!I&<!I&2I&I!I&(I$)I&5AI&I&(I&0!I&I& I&;'I&$I&)__doc__
__future__r   typingr   r   urllib.parser   !pymongo.asynchronous.srv_resolverr   pymongo.commonr   r   pymongo.errorsr	   r
   pymongo.uri_parser_sharedr   r   r   r   r   r   r   r   r   r   _IS_SYNCr-   r+   r#   r'   r%   <module>r\      ss     1 "   % : G 9   
 #/'+&*#'Pj #/'+&*#'E Er'   