class_docstr: Grandparent class for plotting
  modes. Serves as interface for
  registration, lookup, and init
  of modes.
  
  To create a new plot mode,
  inherit from PlotModeBase
  or one of its children, such
  as PlotSurface or PlotCurve.
class_docstr_tok: ["Grandparent","class","for","plotting","modes",".","Serves","as","interface","for","registration",",","lookup",",","and","init","of","modes",".","To","create","a","new","plot","mode",",","inherit","from","PlotModeBase","or","one","of","its","children",",","such","as","PlotSurface","or","PlotCurve","."]
docstr: Called once for each user-usable plot mode.
  For Cartesian2D, it is invoked after the
  class definition: Cartesian2D._register()
docstr_tok: ["Called","once","for","each","user-usable","plot","mode",".","For","Cartesian2D",",","it","is","invoked","after","the","class","definition",":","Cartesian2D._register","(",")"]
code: def _register(cls):
      """
      Called once for each user-usable plot mode.
      For Cartesian2D, it is invoked after the
      class definition: Cartesian2D._register()
      """
      name = cls.__name__
      cls._init_mode()
  
      try:
          i, d = cls.i_var_count, cls.d_var_count
          # Add the mode to _mode_map under all
          # given aliases
          for a in cls.aliases:
              if a not in PlotMode._mode_alias_list:
                  # Also track valid aliases, so
                  # we can quickly know when given
                  # an invalid one in _get_mode.
                  PlotMode._mode_alias_list.append(a)
              PlotMode._mode_map[d][i][a] = cls
          if cls.is_default:
              # If this mode was marked as the
              # default for this d,i combination,
              # also set that.
              PlotMode._mode_default_map[d][i] = cls
  
      except Exception as e:
          raise RuntimeError(
              ("Failed to register " "plot mode %s. Reason: %s")
              % (name, (str(e)))
          )
  
imports: from .plot_interval import PlotInterval
  from .plot_object import PlotObject
  from .util import parse_option_string
  from sympy.core.symbol import Symbol
  from sympy.core.sympify import sympify
  from sympy.geometry.entity import GeometryEntity
  from sympy.utilities.iterables import is_sequence
label_desc: Use image node_id 6 for calling the PlotMode obj's underlying member method code with example usage: obj._register(cls) without return types