def split_options(opts, validate=True, warn=False):
 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.')
 if validate:
  return validate_options(options, warn)
 return options

def split_options ( opts , validate = True , warn = False ) : 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.' ) if validate : return validate_options ( options , warn ) return options
takes the options portion of a mongodb uri .