class_docstr: Class that describes the shared state between the FiftyOne App and
  a corresponding :class:`fiftyone.core.session.Session`.
  
  Args:
      config (None): an optional :class:`fiftyone.core.config.AppConfig`
      dataset (None): the current :class:`fiftyone.core.dataset.Dataset`
      selected (None): the list of currently selected samples
      selected_labels (None): the list of currently selected labels
      spaces (None): a :class:`fiftyone.core.spaces.Space`
      color_scheme (None): a :class:`fiftyone.core.odm.dataset.ColorScheme`
      view (None): the current :class:`fiftyone.core.view.DatasetView`
      view_name (None): the name of the view if the current view is a
          saved view
code: def __init__(
      self,
      config=None,
      dataset=None,
      selected=None,
      selected_labels=None,
      spaces=None,
      color_scheme=None,
      view=None,
      view_name=None,
      field_visibility_stage=None,
      group_slice=None,
  ):
      self.config = config or fo.app_config.copy()
      self.dataset = dataset
      self.selected = selected or []
      self.selected_labels = selected_labels or []
      if dataset is not None:
          dataset.reload()
      self.view = (
          dataset.load_saved_view(view_name)
          if dataset is not None and view_name
          else view
      )
      self.spaces = spaces
      self.color_scheme = color_scheme or build_color_scheme()
      self.field_visibility_stage = field_visibility_stage
      if group_slice is None and view is not None:
          group_slice = view.group_slice
      self.group_slice = group_slice
  
imports: import logging
  import typing
  from bson import json_util
  from dataclasses import asdict
  from mongoengine.base import BaseDict, BaseList
  import strawberry
  import eta.core.serial
  import eta.core.utils
  import fiftyone
  import fiftyone.core.clips
  from fiftyone.core.config import AppConfig
  import fiftyone.core.dataset
  from fiftyone.core.odm.dataset import ColorScheme
  import fiftyone.core.media
  import fiftyone.core.odm
  from fiftyone.core.spaces import Space
  import fiftyone.core.utils
  import fiftyone.core.view
  from fiftyone.server.scalars import JSON
label_desc: Use image node_id 1 to create a new StateDescription object from inherited base classes: etas with example: obj = StateDescription(config, dataset, selected, selected_labels, spaces, color_scheme, view, view_name, field_visibility_stage, group_slice)