text: from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType
  import copy as _copy
  
  
  class Lightposition(_BaseTraceHierarchyType):
  
      # class properties
      # --------------------
      _parent_path_str = "isosurface"
      _path_str = "isosurface.lightposition"
      _valid_props = {"x", "y", "z"}
  
      # x
      # -
      @property
      def x(self):
          """
          Numeric vector, representing the X coordinate for each vertex.
      
          The 'x' property is a number and may be specified as:
            - An int or float in the interval [-100000, 100000]
  
          Returns
          -------
          int|float
          """
          return self["x"]
  
      @x.setter
      def x(self, val):
          self["x"] = val
  
      # y
      # -
      @property
      def y(self):
          """
          Numeric vector, representing the Y coordinate for each vertex.
      
          The 'y' property is a number and may be specified as:
            - An int or float in the interval [-100000, 100000]
  
          Returns
          -------
          int|float
          """
          return self["y"]
  
      @y.setter
      def y(self, val):
          self["y"] = val
  
      # z
      # -
      @property
      def z(self):
          """
          Numeric vector, representing the Z coordinate for each vertex.
      
          The 'z' property is a number and may be specified as:
            - An int or float in the interval [-100000, 100000]
  
          Returns
          -------
          int|float
          """
          return self["z"]
  
      @z.setter
      def z(self, val):
          self["z"] = val
  
      # Self properties description
      # ---------------------------
      @property
      def _prop_descriptions(self):
          return """\
          x
              Numeric vector, representing the X coordinate for each
              vertex.
          y
              Numeric vector, representing the Y coordinate for each
              vertex.
          z
              Numeric vector, representing the Z coordinate for each
              vertex.
          """
  
      def __init__(self, arg=None, x=None, y=None, z=None, **kwargs):
          """
          Construct a new Lightposition object
          
          Parameters
          ----------
          arg
              dict of properties compatible with this constructor or
              an instance of
              :class:`new_plotly.graph_objs.isosurface.Lightposition`
          x
              Numeric vector, representing the X coordinate for each
              vertex.
          y
              Numeric vector, representing the Y coordinate for each
              vertex.
          z
              Numeric vector, representing the Z coordinate for each
              vertex.
  
          Returns
          -------
          Lightposition
          """
          super(Lightposition, self).__init__("lightposition")
  
          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 new_plotly.graph_objs.isosurface.Lightposition 
  constructor must be a dict or 
  an instance of :class:`new_plotly.graph_objs.isosurface.Lightposition`"""
              )
  
          # Handle skip_invalid
          # -------------------
          self._skip_invalid = kwargs.pop("skip_invalid", False)
          self._validate = kwargs.pop("_validate", True)
  
          # Populate data dict with properties
          # ----------------------------------
          _v = arg.pop("x", None)
          _v = x if x is not None else _v
          if _v is not None:
              self["x"] = _v
          _v = arg.pop("y", None)
          _v = y if y is not None else _v
          if _v is not None:
              self["y"] = _v
          _v = arg.pop("z", None)
          _v = z if z is not None else _v
          if _v is not None:
              self["z"] = _v
  
          # Process unknown kwargs
          # ----------------------
          self._process_kwargs(**dict(arg, **kwargs))
  
          # Reset skip_invalid
          # ------------------
          self._skip_invalid = False
  