uri_parser – Tools to parse and validate a MongoDB URI

Tools to parse and validate a MongoDB URI.

pymongo.uri_parser.parse_host(entity: str, default_port: Optional[int] = 27017) Tuple[str, Optional[int]]

Validates a host string

Returns a 2-tuple of host followed by port where port is default_port if it wasn’t specified in the string.

Parameters
  • entity: A host or host:port string where host could be a

    hostname or IP address.

  • default_port: The port number to use when one wasn’t

    specified in entity.

pymongo.uri_parser.parse_ipv6_literal_host(entity: str, default_port: Optional[int]) Tuple[str, Optional[Union[int, str]]]

Validates an IPv6 literal host:port string.

Returns a 2-tuple of IPv6 literal followed by port where port is default_port if it wasn’t specified in entity.

Parameters
  • entity: A string that represents an IPv6 literal enclosed

    in braces (e.g. ‘[::1]’ or ‘[::1]:27017’).

  • default_port: The port number to use when one wasn’t

    specified in entity.

pymongo.uri_parser.parse_uri(uri: str, default_port: Optional[int] = 27017, validate: bool = True, warn: bool = False, normalize: bool = True, connect_timeout: Optional[float] = None, srv_service_name: Optional[str] = None, srv_max_hosts: Optional[int] = None) Dict[str, Any]

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.

Parameters
  • uri: The MongoDB URI to parse.

  • default_port: The port number to use when one wasn’t specified for a host in the URI.

  • validate (optional): If True (the default), validate and normalize all options. Default: True.

  • warn (optional): 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.

  • normalize (optional): If True, convert names of URI options to their internally-used names. Default: True.

  • connect_timeout (optional): The maximum time in milliseconds to wait for a response from the DNS server.

  • ‘srv_service_name` (optional): A custom SRV service name

Changed in version 4.0: To better follow RFC 3986, unquoted percent signs (“%”) are no longer supported.

Changed in version 3.9: Added the normalize parameter.

Changed in version 3.6: Added support for mongodb+srv:// URIs.

Changed in version 3.5: Return the original value of the readPreference MongoDB URI option instead of the validated read preference mode.

Changed in version 3.1: warn added so invalid options can be ignored.

pymongo.uri_parser.parse_userinfo(userinfo: str) Tuple[str, str]

Validates the format of user information in a MongoDB URI. Reserved characters that are gen-delimiters (“:”, “/”, “?”, “#”, “[“, “]”, “@”) as per RFC 3986 must be escaped.

Returns a 2-tuple containing the unescaped username followed by the unescaped password.

Paramaters
  • userinfo: A string of the form <username>:<password>

pymongo.uri_parser.split_hosts(hosts: str, default_port: Optional[int] = 27017) List[Tuple[str, Optional[int]]]

Takes a string of the form host1[:port],host2[:port]… and splits it into (host, port) tuples. If [:port] isn’t present the default_port is used.

Returns a set of 2-tuples containing the host name (or IP) followed by port number.

Parameters
  • hosts: A string of the form host1[:port],host2[:port],…

  • default_port: The port number to use when one wasn’t specified for a host.

pymongo.uri_parser.split_options(opts: str, validate: bool = True, warn: bool = False, normalize: bool = True) MutableMapping[str, Any]

Takes the options portion of a MongoDB URI, validates each option and returns the options in a dictionary.

Parameters
  • opt: A string representing MongoDB URI options.

  • validate: If True (the default), validate and normalize all options.

  • warn: If False (the default), suppress all warnings raised during validation of options.

  • normalize: If True (the default), renames all options to their internally-used names.

pymongo.uri_parser.validate_options(opts: Mapping[str, Any], warn: bool = False) MutableMapping[str, Any]

Validates and normalizes options passed in a MongoDB URI.

Returns a new dictionary of validated and normalized options. If warn is False then errors will be thrown for invalid options, otherwise they will be ignored and a warning will be issued.

Parameters
  • opts: A dict of MongoDB URI options.

  • warn (optional): If True then warnings will be logged and invalid options will be ignored. Otherwise invalid options will cause errors.