text: from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType
  import copy as _copy
  
  
  class Threshold(_BaseTraceHierarchyType):
  
      # class properties
      # --------------------
      _parent_path_str = "indicator.gauge"
      _path_str = "indicator.gauge.threshold"
      _valid_props = {"line", "thickness", "value"}
  
      # line
      # ----
      @property
      def line(self):
          """
          The 'line' property is an instance of Line
          that may be specified as:
            - An instance of :class:`plotly.graph_objs.indicator.gauge.threshold.Line`
            - A dict of string/value properties that will be passed
              to the Line constructor
      
              Supported dict properties:
                  
                  color
                      Sets the color of the threshold line.
                  width
                      Sets the width (in px) of the threshold line.
  
          Returns
          -------
          plotly.graph_objs.indicator.gauge.threshold.Line
          """
          return self["line"]
  
      @line.setter
      def line(self, val):
          self["line"] = val
  
      # thickness
      # ---------
      @property
      def thickness(self):
          """
          Sets the thickness of the threshold line as a fraction of the
          thickness of the gauge.
      
          The 'thickness' property is a number and may be specified as:
            - An int or float in the interval [0, 1]
  
          Returns
          -------
          int|float
          """
          return self["thickness"]
  
      @thickness.setter
      def thickness(self, val):
          self["thickness"] = val
  
      # value
      # -----
      @property
      def value(self):
          """
          Sets a treshold value drawn as a line.
      
          The 'value' property is a number and may be specified as:
            - An int or float
  
          Returns
          -------
          int|float
          """
          return self["value"]
  
      @value.setter
      def value(self, val):
          self["value"] = val
  
      # Self properties description
      # ---------------------------
      @property
      def _prop_descriptions(self):
          return """\
          line
              :class:`plotly.graph_objects.indicator.gauge.threshold.
              Line` instance or dict with compatible properties
          thickness
              Sets the thickness of the threshold line as a fraction
              of the thickness of the gauge.
          value
              Sets a treshold value drawn as a line.
          """
  
      def __init__(self, arg=None, line=None, thickness=None, value=None, **kwargs):
          """
          Construct a new Threshold object
          
          Parameters
          ----------
          arg
              dict of properties compatible with this constructor or
              an instance of
              :class:`plotly.graph_objs.indicator.gauge.Threshold`
          line
              :class:`plotly.graph_objects.indicator.gauge.threshold.
              Line` instance or dict with compatible properties
          thickness
              Sets the thickness of the threshold line as a fraction
              of the thickness of the gauge.
          value
              Sets a treshold value drawn as a line.
  
          Returns
          -------
          Threshold
          """
          super(Threshold, self).__init__("threshold")
  
          if "_parent" in kwargs:
              self._parent = kwargs["_parent"]
              return
  
          # Validate arg
          # ------------
          if arg is None:
              arg = {}
          elif isinstance(arg, self.__class__):
              arg = arg.to_plotly_json()
          elif isinstance(arg, dict):
              arg = _copy.copy(arg)
          else:
              raise ValueError(
                  """\
  The first argument to the plotly.graph_objs.indicator.gauge.Threshold 
  constructor must be a dict or 
  an instance of :class:`plotly.graph_objs.indicator.gauge.Threshold`"""
              )
  
          # Handle skip_invalid
          # -------------------
          self._skip_invalid = kwargs.pop("skip_invalid", False)
  
          # Populate data dict with properties
          # ----------------------------------
          _v = arg.pop("line", None)
          _v = line if line is not None else _v
          if _v is not None:
              self["line"] = _v
          _v = arg.pop("thickness", None)
          _v = thickness if thickness is not None else _v
          if _v is not None:
              self["thickness"] = _v
          _v = arg.pop("value", None)
          _v = value if value is not None else _v
          if _v is not None:
              self["value"] = _v
  
          # Process unknown kwargs
          # ----------------------
          self._process_kwargs(**dict(arg, **kwargs))
  
          # Reset skip_invalid
          # ------------------
          self._skip_invalid = False
  