code: def split_options(opts, validate=True, warn=False, normalize=True):
      
      and_idx = opts.find("&")
      semi_idx = opts.find(";")
      try:
          if and_idx >= 0 and semi_idx >= 0:
              raise InvalidURI("Can not mix '&' and ';' for option separators.")
          elif and_idx >= 0:
              options = _parse_options(opts, "&")
          elif semi_idx >= 0:
              options = _parse_options(opts, ";")
          elif opts.find("=") != -1:
              options = _parse_options(opts, None)
          else:
              raise ValueError
      except ValueError:
          raise InvalidURI("MongoDB URI options are key=value pairs.")
  
      options = _handle_option_deprecations(options)
  
      if validate:
          options = validate_options(options, warn)
  
      if normalize:
          options = _normalize_options(options)
  
      return options
docs: 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.