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: Get an experiment permission for a user.
  
  :param experiment_id: The id of the experiment.
  :param username: The username.
  
  :return: A single :py:class:`mlflow.server.auth.entities.ExperimentPermission` object.
           Raises ``RestException`` if the user does not exist,
           or no permission exists for this experiment user pair.
           Note that the default permission will still be effective even if
           no permission exists.
  
  .. 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")
      ep = client.get_experiment_permission("myexperiment", "newuser")
      print(f"experiment_id: {ep.experiment_id}")
      print(f"user_id: {ep.user_id}")
      print(f"permission: {ep.permission}")
  
  .. code-block:: text
      :caption: Output
  
      experiment_id: myexperiment
      user_id: 3
      permission: READ
docstr_tok: ["Get","an","experiment","permission","for","a","user",".",":","param","experiment_id",":","The","id","of","the","experiment",".",":","param","username",":","The","username",".",":","return",":","A","single",":","py",":","class",":","`","mlflow.server.auth.entities.ExperimentPermission","`","object",".","Raises","``","RestException","``","if","the","user","does","not","exist",",","or","no","permission","exists","for","this","experiment","user","pair",".","Note","that","the","default","permission","will","still","be","effective","even","if","no","permission","exists",".","..","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","''",")","ep","=","client.get_experiment_permission","(","``","myexperiment","''",",","``","newuser","''",")","print","(","f","''","experiment_id",":","{","ep.experiment_id","}","''",")","print","(","f","''","user_id",":","{","ep.user_id","}","''",")","print","(","f","''","permission",":","{","ep.permission","}","''",")","..","code-block",":",":","text",":","caption",":","Output","experiment_id",":","myexperiment","user_id",":","3","permission",":","READ"]
code: def get_experiment_permission(
      self, experiment_id: str, username: str
  ):
      """
      Get an experiment permission for a user.
  
      :param experiment_id: The id of the experiment.
      :param username: The username.
  
      :return: A single :py:class:`mlflow.server.auth.entities.ExperimentPermission` object.
               Raises ``RestException`` if the user does not exist,
               or no permission exists for this experiment user pair.
               Note that the default permission will still be effective even if
               no permission exists.
  
      .. 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")
          ep = client.get_experiment_permission("myexperiment", "newuser")
          print(f"experiment_id: {ep.experiment_id}")
          print(f"user_id: {ep.user_id}")
          print(f"permission: {ep.permission}")
  
      .. code-block:: text
          :caption: Output
  
          experiment_id: myexperiment
          user_id: 3
          permission: READ
      """
      resp = self._request(
          GET_EXPERIMENT_PERMISSION,
          "GET",
          params={"experiment_id": experiment_id, "username": username},
      )
      return ExperimentPermission.from_json(
          resp["experiment_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 9 for calling the AuthServiceClient obj's underlying member method code with example usage: obj.get_experiment_permission(experiment_id, username) and returns: ExperimentPermission