code: def analyze(self, handle, filename):
          
          # multipart post files.
          files = {"file": (filename, handle)}
  
          # ensure the handle is at offset 0.
          handle.seek(0)
  
          response = self._request("tasks/create/file", method='POST', files=files)
  
          # return task id; try v1.3 and v2.0 API response formats
          try:
              return str(json.loads(response.content.decode('utf-8'))["task_id"])
          except KeyError:
              return str(json.loads(response.content.decode('utf-8'))["task_ids"][0])
docs: Submit a file for analysis.
  
          :type  handle:   File handle
          :param handle:   Handle to file to upload for analysis.
          :type  filename: str
          :param filename: File name.
  
          :rtype:  str
          :return: Task ID as a string