class_docstr: Client for a remote tracking server accessed via REST API calls
  
  :param get_host_creds: Method to be invoked prior to every REST request to get the
    :py:class:`mlflow.rest_utils.MlflowHostCreds` for the request. Note that this
    is a function so that we can obtain fresh credentials in the case of expiry.
class_docstr_tok: ["Client","for","a","remote","tracking","server","accessed","via","REST","API","calls",":","param","get_host_creds",":","Method","to","be","invoked","prior","to","every","REST","request","to","get","the",":","py",":","class",":","`","mlflow.rest_utils.MlflowHostCreds","`","for","the","request",".","Note","that","this","is","a","function","so","that","we","can","obtain","fresh","credentials","in","the","case","of","expiry","."]
docstr: Create a new experiment.
  If an experiment with the given name already exists, throws exception.
  
  :param name: Desired name for an experiment
  
  :return: experiment_id (string) for the newly created experiment if successful, else None
docstr_tok: ["Create","a","new","experiment",".","If","an","experiment","with","the","given","name","already","exists",",","throws","exception",".",":","param","name",":","Desired","name","for","an","experiment",":","return",":","experiment_id","(","string",")","for","the","newly","created","experiment","if","successful",",","else","None"]
code: def create_experiment(self, name, artifact_location=None, tags=None):
      """
      Create a new experiment.
      If an experiment with the given name already exists, throws exception.
  
      :param name: Desired name for an experiment
  
      :return: experiment_id (string) for the newly created experiment if successful, else None
      """
      tag_protos = [tag.to_proto() for tag in tags] if tags else []
      req_body = message_to_json(
          CreateExperiment(
              name=name,
              artifact_location=artifact_location,
              tags=tag_protos,
          )
      )
      response_proto = self._call_endpoint(CreateExperiment, req_body)
      return response_proto.experiment_id
  
imports: from typing import List, Optional
  from mlflow.entities import DatasetInput, Experiment, Metric, Run, RunInfo, ViewType
  from mlflow.exceptions import MlflowException
  from mlflow.protos import databricks_pb2
  from mlflow.protos.service_pb2 import CreateExperiment, CreateRun, DeleteExperiment, DeleteRun, DeleteTag, GetExperiment, GetExperimentByName, GetMetricHistory, GetRun, LogBatch, LogInputs, LogMetric, LogModel, LogParam, MlflowService, RestoreExperiment, RestoreRun, SearchExperiments, SearchRuns, SetExperimentTag, SetTag, UpdateExperiment, UpdateRun
  from mlflow.store.entities.paged_list import PagedList
  from mlflow.store.tracking.abstract_store import AbstractStore
  from mlflow.utils.proto_json_utils import message_to_json
  from mlflow.utils.rest_utils import _REST_API_PATH_PREFIX, call_endpoint, extract_api_info_for_service
label_desc: Use image node_id 4 for calling the RestStore obj's underlying member method code with example usage: obj.create_experiment(name, artifact_location, tags) and returns: response_proto