class_docstr: SnapshotController inherits from BaseController and manages business logic related to snapshots
  
  Attributes
  ----------
  code : datmo.core.controller.code.code.CodeController
  file_collection : datmo.core.controller.file.file_collection.FileCollectionController
  environment : datmo.core.controller.environment.environment.EnvironmentController
  
  Methods
  -------
  create(dictionary)
      Create a snapshot within the project
  checkout(id)
      Checkout to a specific snapshot within the project
  list(visible=None, sort_key=None, sort_order=None)
      List all snapshots present within the project based on given filters
  delete(id)
      Delete the snapshot specified from the project
docstr: Checks if there exists any unstaged changes for the snapshot in the project.
  
  Returns
  -------
  bool
      False if it's already staged else error
  
  Raises
  ------
  UnstagedChanges
      error if not there exists unstaged changes in snapshot
docstr_tok: ["Checks","if","there","exists","any","unstaged","changes","for","the","snapshot","in","the","project",".","Returns","--","--","--","-","bool","False","if","it","'s","already","staged","else","error","Raises","--","--","--","UnstagedChanges","error","if","not","there","exists","unstaged","changes","in","snapshot"]
code: def check_unstaged_changes(self):
      """Checks if there exists any unstaged changes for the snapshot in the project.
  
      Returns
      -------
      bool
          False if it's already staged else error
  
      Raises
      ------
      UnstagedChanges
          error if not there exists unstaged changes in snapshot
      """
      try:
          # check for unstaged changes in code
          self.code_controller.check_unstaged_changes()
          # check for unstaged changes in environment
          self.environment_controller.check_unstaged_changes()
          # check for unstaged changes in file
          self.file_collection_controller.check_unstaged_changes()
          return False
      except UnstagedChanges:
          raise UnstagedChanges()
  
imports: import os
  from datmo.core.controller.base import BaseController
  from datmo.core.controller.code.code import CodeController
  from datmo.core.controller.file.file_collection import FileCollectionController
  from datmo.core.controller.environment.environment import EnvironmentController
  from datmo.core.entity.snapshot import Snapshot
  from datmo.core.util.i18n import get
  from datmo.core.util.validation import validate
  from datmo.core.util.json_store import JSONStore
  from datmo.core.util.exceptions import FileIOError, RequiredArgumentMissing, ProjectNotInitialized, EntityNotFound, TaskNotComplete, DoesNotExist, UnstagedChanges
label_desc: Use image node_id 5 for calling the SnapshotController obj's underlying member method code with example usage: obj.check_unstaged_changes() and returns: False