code: def __init__(
      self,
      message: str,
      datasource_id: Optional[int],
      datasource_type: Optional[str],
  ) -> None:
      self.message = message
      self.datasource_id = datasource_id
      self.datasource_type = datasource_type
      super().__init__(self.message)
  
file_path: superset/superset/explore/exceptions.py
imports: from typing import Optional
  from flask_babel import lazy_gettext
  from superset.commands.exceptions import CommandException, CommandInvalidError, ForbiddenError
label_desc: Use image node_id 1 to create a new DatasetAccessDeniedError object from inherited base classes: ForbiddenError with example: obj = DatasetAccessDeniedError(message, datasource_id, datasource_type)