class_docstr: Client of an MLflow Tracking Server that enabled the default basic authentication plugin.
  It is recommended to use :py:func:`mlflow.server.get_app_client()` to instantiate this class.
  See https://mlflow.org/docs/latest/auth.html for more information.
class_docstr_tok: ["Client","of","an","MLflow","Tracking","Server","that","enabled","the","default","basic","authentication","plugin",".","It","is","recommended","to","use",":","py",":","func",":","`","mlflow.server.get_app_client","(",")","`","to","instantiate","this","class",".","See","https",":","\/\/mlflow.org\/docs\/latest\/auth.html","for","more","information","."]
docstr: Update an existing experiment permission for a user.
  
  :param experiment_id: The id of the experiment.
  :param username: The username.
  :param permission: New permission to grant.
      Must be one of "READ", "EDIT", "MANAGE" and "NO_PERMISSIONS".
  
  :return: None. Raises ``RestException`` if the user does not exist,
           or no permission exists for this experiment user pair,
           or if the permission is invalid.
  
  .. code-block:: bash
      :caption: Example
  
      export MLFLOW_TRACKING_USERNAME=admin
      export MLFLOW_TRACKING_PASSWORD=password
  
  .. code-block:: python
  
      from mlflow.server.auth.client import AuthServiceClient
  
      client = AuthServiceClient("tracking_uri")
      client.create_user("newuser", "newpassword")
      client.create_experiment_permission("myexperiment", "newuser", "READ")
      client.update_experiment_permission("myexperiment", "newuser", "EDIT")
docstr_tok: ["Update","an","existing","experiment","permission","for","a","user",".",":","param","experiment_id",":","The","id","of","the","experiment",".",":","param","username",":","The","username",".",":","param","permission",":","New","permission","to","grant",".","Must","be","one","of","``","READ","''",",","``","EDIT","''",",","``","MANAGE","''","and","``","NO_PERMISSIONS","''",".",":","return",":","None",".","Raises","``","RestException","``","if","the","user","does","not","exist",",","or","no","permission","exists","for","this","experiment","user","pair",",","or","if","the","permission","is","invalid",".","..","code-block",":",":","bash",":","caption",":","Example","export","MLFLOW_TRACKING_USERNAME=admin","export","MLFLOW_TRACKING_PASSWORD=password","..","code-block",":",":","python","from","mlflow.server.auth.client","import","AuthServiceClient","client","=","AuthServiceClient","(","``","tracking_uri","''",")","client.create_user","(","``","newuser","''",",","``","newpassword","''",")","client.create_experiment_permission","(","``","myexperiment","''",",","``","newuser","''",",","``","READ","''",")","client.update_experiment_permission","(","``","myexperiment","''",",","``","newuser","''",",","``","EDIT","''",")"]
code: def update_experiment_permission(
      self, experiment_id: str, username: str, permission: str
  ):
      """
      Update an existing experiment permission for a user.
  
      :param experiment_id: The id of the experiment.
      :param username: The username.
      :param permission: New permission to grant.
          Must be one of "READ", "EDIT", "MANAGE" and "NO_PERMISSIONS".
  
      :return: None. Raises ``RestException`` if the user does not exist,
               or no permission exists for this experiment user pair,
               or if the permission is invalid.
  
      .. code-block:: bash
          :caption: Example
  
          export MLFLOW_TRACKING_USERNAME=admin
          export MLFLOW_TRACKING_PASSWORD=password
  
      .. code-block:: python
  
          from mlflow.server.auth.client import AuthServiceClient
  
          client = AuthServiceClient("tracking_uri")
          client.create_user("newuser", "newpassword")
          client.create_experiment_permission("myexperiment", "newuser", "READ")
          client.update_experiment_permission("myexperiment", "newuser", "EDIT")
      """
      self._request(
          UPDATE_EXPERIMENT_PERMISSION,
          "PATCH",
          json={
              "experiment_id": experiment_id,
              "username": username,
              "permission": permission,
          },
      )
  
imports: from mlflow.server.auth.entities import ExperimentPermission, RegisteredModelPermission, User
  from mlflow.server.auth.routes import CREATE_EXPERIMENT_PERMISSION, CREATE_REGISTERED_MODEL_PERMISSION, CREATE_USER, DELETE_EXPERIMENT_PERMISSION, DELETE_REGISTERED_MODEL_PERMISSION, DELETE_USER, GET_EXPERIMENT_PERMISSION, GET_REGISTERED_MODEL_PERMISSION, GET_USER, UPDATE_EXPERIMENT_PERMISSION, UPDATE_REGISTERED_MODEL_PERMISSION, UPDATE_USER_ADMIN, UPDATE_USER_PASSWORD
  from mlflow.tracking._tracking_service.utils import _get_default_host_creds
  from mlflow.utils.rest_utils import http_request_safe
label_desc: Use image node_id 10 for calling the AuthServiceClient obj's underlying member method code with example usage: obj.update_experiment_permission(experiment_id, username, permission) without return types