code: def prepend_scheme_if_needed(url, new_scheme):
      
      scheme, netloc, path, params, query, fragment = urlparse(url, new_scheme)
  
      # urlparse is a finicky beast, and sometimes decides that there isn't a
      # netloc present. Assume that it's being over-cautious, and switch netloc
      # and path if urlparse decided there was no netloc.
      if not netloc:
          netloc, path = path, netloc
  
      return urlunparse((scheme, netloc, path, params, query, fragment))
docs: Given a URL that may or may not have a scheme, prepend the given scheme.
      Does not replace a present scheme with the one provided as an argument.
  
      :rtype: str