docs: def get_query_values_from_url(url, keys=None):
      """Gets query string values from a url.
  
      if a list of keys are provided, then a dict will be returned.  If only a
      single string key is provided, then only a single value will be returned.
  
      >>> url = 'http://helloworld.com/some/path?test=5&hello=world&john=doe'
      >>> get_query_values_from_url(url=url, keys='test')
      "5"
      >>> get_query_values_from_url(url=url, keys=['test'])
      {'test': '5'}
      >>> get_query_values_from_url(url=url, keys=['test', 'john'])
      {'test': '5', 'john': 'doe'}
      >>> get_query_values_from_url(url=url, keys=['test', 'john', 'blah'])
      {'test': '5', 'john': 'doe', 'blah': None}
      """
      if not url or '?' not in url:
          # no query params
          return None
  
      parsed_url = urlparse(url)
      query = dict(parse_qsl(parsed_url.query))
  
      if keys is None:
          return query
  
      if isinstance(keys, string_types):
          return query.get(keys)
  
      return {k: query.get(k) for k in keys}