code: def curl_remote_name(cls, file_url):
          
          tar_gz_file_name = file_url.split('/')[-1]
  
          if sys.version_info >= (3, 2):
              from urllib.request import urlopen
              from urllib.error import HTTPError
          else:
              from urllib2 import urlopen
              from urllib2 import HTTPError
  
          response = None
          try:
              response = urlopen(file_url)
          except HTTPError as e:
              message = 'Download failed: URL: {0}, reason: {1}'.format(
                        file_url, e)
              if 'HTTP Error 404' in str(e):
                  raise RemoteFileNotFoundError(message)
              else:
                  raise InstallError(message)
  
          tar_gz_file_obj = io.BytesIO(response.read())
          with open(tar_gz_file_name, 'wb') as f_out:
              f_out.write(tar_gz_file_obj.read())
          return tar_gz_file_name
docs: Download file_url, and save as a file name of the URL.
  
          It behaves like "curl -O or --remote-name".
          It raises HTTPError if the file_url not found.