docs: def createReport(self,
                       out_file_path,
                       studyAreas,
                       report=None,
                       format="PDF",
                       reportFields=None,
                       studyAreasOptions=None,
                       useData=None,
                       inSR=4326,
                       ):
          """
          The GeoEnrichment Create Report method uses the concept of a study
          area to define the location of the point or area that you want to
          enrich with generated reports. This method allows you to create
          many types of high-quality reports for a variety of use cases
          describing the input area. If a point is used as a study area, the
          service will create a 1-mile ring buffer around the point to
          collect and append enrichment data. Optionally, you can create a
          buffer ring or drive-time service area around the points to prepare
          PDF or Excel reports for the study areas.
  
          Note:
            For full examples for each input, please review the following:
            http://resources.arcgis.com/en/help/arcgis-rest-api/#/Create_report/02r30000022q000000/
  
          Inputs:
            out_file_path - save location of the report
            studyAreas - Required parameter to specify a list of input
              features to be enriched. The input can be a Point, Polygon,
              Adress, or named administrative boundary.  The locations can be
              passed in as a single object or as a list of objects.
            report - Default report to generate.
            format - specify the generated report. Options are: XLSX or PDF
            reportFields - Optional parameter specifies additional choices to
              customize reports.  See the URL above to see all the options.
            studyAreasOptions - Optional parameter to specify enrichment
              behavior. For points described as map coordinates, a 1-mile
              ring area centered on each site will be used by default. You
              can use this parameter to change these default settings.
              With this parameter, the caller can override the default
              behavior describing how the enrichment attributes are appended
              to the input features described in studyAreas. For example,
              you can change the output ring buffer to 5 miles, change the
              number of output buffers created around each point, and also
              change the output buffer type to a drive-time service area
              rather than a simple ring buffer.
            useData - By default, the service will automatically determine
              the country or dataset that is associated with each location or
              area submitted in the studyAreas parameter; however, there is
              an associated computational cost which may lengthen the time it
              takes to return a response. To skip this intermediate step and
              potentially improve the speed and performance of the service,
              the caller can specify the country or dataset information up
              front through this parameter.
            inSR - parameter to define the input geometries in the studyAreas
              parameter in a specified spatial reference system.
          """
          url = self._base_url + self._url_create_report
          if isinstance(studyAreas, list) == False:
              studyAreas = [studyAreas]
          studyAreas = self.__geometryToDict(studyAreas)
  
          params = {
              "f" : "bin",
              "studyAreas" : studyAreas,
              "inSR" : inSR,
          }
          if not report is None:
              params['report'] = report
          if format is None:
              format = "pdf"
          elif format.lower() in ['pdf', 'xlsx']:
              params['format'] = format.lower()
          else:
              raise AttributeError("Invalid format value.")
          if not reportFields is None:
              params['reportFields'] = reportFields
          if not studyAreasOptions is None:
              params['studyAreasOptions'] = studyAreasOptions
          if not useData is None:
              params['useData'] = useData
          result = self._get(url=url,
                             param_dict=params,
                             securityHandler=self._securityHandler,
                             proxy_url=self._proxy_url,
                             proxy_port=self._proxy_port,
                             out_folder=os.path.dirname(out_file_path))
          return result