text: from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType
  import copy as _copy
  
  
  class Hoverlabel(_BaseTraceHierarchyType):
  
      # class properties
      # --------------------
      _parent_path_str = "scatter"
      _path_str = "scatter.hoverlabel"
      _valid_props = {
          "align",
          "alignsrc",
          "bgcolor",
          "bgcolorsrc",
          "bordercolor",
          "bordercolorsrc",
          "font",
          "namelength",
          "namelengthsrc",
      }
  
      # align
      # -----
      @property
      def align(self):
          """
          Sets the horizontal alignment of the text content within hover
          label box. Has an effect only if the hover label text spans
          more two or more lines
      
          The 'align' property is an enumeration that may be specified as:
            - One of the following enumeration values:
                  ['left', 'right', 'auto']
            - A tuple, list, or one-dimensional numpy array of the above
  
          Returns
          -------
          Any|numpy.ndarray
          """
          return self["align"]
  
      @align.setter
      def align(self, val):
          self["align"] = val
  
      # alignsrc
      # --------
      @property
      def alignsrc(self):
          """
          Sets the source reference on Chart Studio Cloud for  align .
      
          The 'alignsrc' property must be specified as a string or
          as a new_plotly.grid_objs.Column object
  
          Returns
          -------
          str
          """
          return self["alignsrc"]
  
      @alignsrc.setter
      def alignsrc(self, val):
          self["alignsrc"] = val
  
      # bgcolor
      # -------
      @property
      def bgcolor(self):
          """
          Sets the background color of the hover labels for this trace
      
          The 'bgcolor' property is a color and may be specified as:
            - A hex string (e.g. '#ff0000')
            - An rgb/rgba string (e.g. 'rgb(255,0,0)')
            - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
            - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
            - A named CSS color:
                  aliceblue, antiquewhite, aqua, aquamarine, azure,
                  beige, bisque, black, blanchedalmond, blue,
                  blueviolet, brown, burlywood, cadetblue,
                  chartreuse, chocolate, coral, cornflowerblue,
                  cornsilk, crimson, cyan, darkblue, darkcyan,
                  darkgoldenrod, darkgray, darkgrey, darkgreen,
                  darkkhaki, darkmagenta, darkolivegreen, darkorange,
                  darkorchid, darkred, darksalmon, darkseagreen,
                  darkslateblue, darkslategray, darkslategrey,
                  darkturquoise, darkviolet, deeppink, deepskyblue,
                  dimgray, dimgrey, dodgerblue, firebrick,
                  floralwhite, forestgreen, fuchsia, gainsboro,
                  ghostwhite, gold, goldenrod, gray, grey, green,
                  greenyellow, honeydew, hotpink, indianred, indigo,
                  ivory, khaki, lavender, lavenderblush, lawngreen,
                  lemonchiffon, lightblue, lightcoral, lightcyan,
                  lightgoldenrodyellow, lightgray, lightgrey,
                  lightgreen, lightpink, lightsalmon, lightseagreen,
                  lightskyblue, lightslategray, lightslategrey,
                  lightsteelblue, lightyellow, lime, limegreen,
                  linen, magenta, maroon, mediumaquamarine,
                  mediumblue, mediumorchid, mediumpurple,
                  mediumseagreen, mediumslateblue, mediumspringgreen,
                  mediumturquoise, mediumvioletred, midnightblue,
                  mintcream, mistyrose, moccasin, navajowhite, navy,
                  oldlace, olive, olivedrab, orange, orangered,
                  orchid, palegoldenrod, palegreen, paleturquoise,
                  palevioletred, papayawhip, peachpuff, peru, pink,
                  plum, powderblue, purple, red, rosybrown,
                  royalblue, rebeccapurple, saddlebrown, salmon,
                  sandybrown, seagreen, seashell, sienna, silver,
                  skyblue, slateblue, slategray, slategrey, snow,
                  springgreen, steelblue, tan, teal, thistle, tomato,
                  turquoise, violet, wheat, white, whitesmoke,
                  yellow, yellowgreen
            - A list or array of any of the above
  
          Returns
          -------
          str|numpy.ndarray
          """
          return self["bgcolor"]
  
      @bgcolor.setter
      def bgcolor(self, val):
          self["bgcolor"] = val
  
      # bgcolorsrc
      # ----------
      @property
      def bgcolorsrc(self):
          """
          Sets the source reference on Chart Studio Cloud for  bgcolor .
      
          The 'bgcolorsrc' property must be specified as a string or
          as a new_plotly.grid_objs.Column object
  
          Returns
          -------
          str
          """
          return self["bgcolorsrc"]
  
      @bgcolorsrc.setter
      def bgcolorsrc(self, val):
          self["bgcolorsrc"] = val
  
      # bordercolor
      # -----------
      @property
      def bordercolor(self):
          """
          Sets the border color of the hover labels for this trace.
      
          The 'bordercolor' property is a color and may be specified as:
            - A hex string (e.g. '#ff0000')
            - An rgb/rgba string (e.g. 'rgb(255,0,0)')
            - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
            - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
            - A named CSS color:
                  aliceblue, antiquewhite, aqua, aquamarine, azure,
                  beige, bisque, black, blanchedalmond, blue,
                  blueviolet, brown, burlywood, cadetblue,
                  chartreuse, chocolate, coral, cornflowerblue,
                  cornsilk, crimson, cyan, darkblue, darkcyan,
                  darkgoldenrod, darkgray, darkgrey, darkgreen,
                  darkkhaki, darkmagenta, darkolivegreen, darkorange,
                  darkorchid, darkred, darksalmon, darkseagreen,
                  darkslateblue, darkslategray, darkslategrey,
                  darkturquoise, darkviolet, deeppink, deepskyblue,
                  dimgray, dimgrey, dodgerblue, firebrick,
                  floralwhite, forestgreen, fuchsia, gainsboro,
                  ghostwhite, gold, goldenrod, gray, grey, green,
                  greenyellow, honeydew, hotpink, indianred, indigo,
                  ivory, khaki, lavender, lavenderblush, lawngreen,
                  lemonchiffon, lightblue, lightcoral, lightcyan,
                  lightgoldenrodyellow, lightgray, lightgrey,
                  lightgreen, lightpink, lightsalmon, lightseagreen,
                  lightskyblue, lightslategray, lightslategrey,
                  lightsteelblue, lightyellow, lime, limegreen,
                  linen, magenta, maroon, mediumaquamarine,
                  mediumblue, mediumorchid, mediumpurple,
                  mediumseagreen, mediumslateblue, mediumspringgreen,
                  mediumturquoise, mediumvioletred, midnightblue,
                  mintcream, mistyrose, moccasin, navajowhite, navy,
                  oldlace, olive, olivedrab, orange, orangered,
                  orchid, palegoldenrod, palegreen, paleturquoise,
                  palevioletred, papayawhip, peachpuff, peru, pink,
                  plum, powderblue, purple, red, rosybrown,
                  royalblue, rebeccapurple, saddlebrown, salmon,
                  sandybrown, seagreen, seashell, sienna, silver,
                  skyblue, slateblue, slategray, slategrey, snow,
                  springgreen, steelblue, tan, teal, thistle, tomato,
                  turquoise, violet, wheat, white, whitesmoke,
                  yellow, yellowgreen
            - A list or array of any of the above
  
          Returns
          -------
          str|numpy.ndarray
          """
          return self["bordercolor"]
  
      @bordercolor.setter
      def bordercolor(self, val):
          self["bordercolor"] = val
  
      # bordercolorsrc
      # --------------
      @property
      def bordercolorsrc(self):
          """
          Sets the source reference on Chart Studio Cloud for
          bordercolor .
      
          The 'bordercolorsrc' property must be specified as a string or
          as a new_plotly.grid_objs.Column object
  
          Returns
          -------
          str
          """
          return self["bordercolorsrc"]
  
      @bordercolorsrc.setter
      def bordercolorsrc(self, val):
          self["bordercolorsrc"] = val
  
      # font
      # ----
      @property
      def font(self):
          """
          Sets the font used in hover labels.
      
          The 'font' property is an instance of Font
          that may be specified as:
            - An instance of :class:`new_plotly.graph_objs.scatter.hoverlabel.Font`
            - A dict of string/value properties that will be passed
              to the Font constructor
      
              Supported dict properties:
                  
                  color
      
                  colorsrc
                      Sets the source reference on Chart Studio Cloud
                      for  color .
                  family
                      HTML font family - the typeface that will be
                      applied by the web browser. The web browser
                      will only be able to apply a font if it is
                      available on the system which it operates.
                      Provide multiple font families, separated by
                      commas, to indicate the preference in which to
                      apply fonts if they aren't available on the
                      system. The Chart Studio Cloud (at
                      https://chart-studio.plotly.com or on-premise)
                      generates images on a server, where only a
                      select number of fonts are installed and
                      supported. These include "Arial", "Balto",
                      "Courier New", "Droid Sans",, "Droid Serif",
                      "Droid Sans Mono", "Gravitas One", "Old
                      Standard TT", "Open Sans", "Overpass", "PT Sans
                      Narrow", "Raleway", "Times New Roman".
                  familysrc
                      Sets the source reference on Chart Studio Cloud
                      for  family .
                  size
      
                  sizesrc
                      Sets the source reference on Chart Studio Cloud
                      for  size .
  
          Returns
          -------
          new_plotly.graph_objs.scatter.hoverlabel.Font
          """
          return self["font"]
  
      @font.setter
      def font(self, val):
          self["font"] = val
  
      # namelength
      # ----------
      @property
      def namelength(self):
          """
          Sets the default length (in number of characters) of the trace
          name in the hover labels for all traces. -1 shows the whole
          name regardless of length. 0-3 shows the first 0-3 characters,
          and an integer >3 will show the whole name if it is less than
          that many characters, but if it is longer, will truncate to
          `namelength - 3` characters and add an ellipsis.
      
          The 'namelength' property is a integer and may be specified as:
            - An int (or float that will be cast to an int)
              in the interval [-1, 9223372036854775807]
            - A tuple, list, or one-dimensional numpy array of the above
  
          Returns
          -------
          int|numpy.ndarray
          """
          return self["namelength"]
  
      @namelength.setter
      def namelength(self, val):
          self["namelength"] = val
  
      # namelengthsrc
      # -------------
      @property
      def namelengthsrc(self):
          """
          Sets the source reference on Chart Studio Cloud for  namelength
          .
      
          The 'namelengthsrc' property must be specified as a string or
          as a new_plotly.grid_objs.Column object
  
          Returns
          -------
          str
          """
          return self["namelengthsrc"]
  
      @namelengthsrc.setter
      def namelengthsrc(self, val):
          self["namelengthsrc"] = val
  
      # Self properties description
      # ---------------------------
      @property
      def _prop_descriptions(self):
          return """\
          align
              Sets the horizontal alignment of the text content
              within hover label box. Has an effect only if the hover
              label text spans more two or more lines
          alignsrc
              Sets the source reference on Chart Studio Cloud for
              align .
          bgcolor
              Sets the background color of the hover labels for this
              trace
          bgcolorsrc
              Sets the source reference on Chart Studio Cloud for
              bgcolor .
          bordercolor
              Sets the border color of the hover labels for this
              trace.
          bordercolorsrc
              Sets the source reference on Chart Studio Cloud for
              bordercolor .
          font
              Sets the font used in hover labels.
          namelength
              Sets the default length (in number of characters) of
              the trace name in the hover labels for all traces. -1
              shows the whole name regardless of length. 0-3 shows
              the first 0-3 characters, and an integer >3 will show
              the whole name if it is less than that many characters,
              but if it is longer, will truncate to `namelength - 3`
              characters and add an ellipsis.
          namelengthsrc
              Sets the source reference on Chart Studio Cloud for
              namelength .
          """
  
      def __init__(
          self,
          arg=None,
          align=None,
          alignsrc=None,
          bgcolor=None,
          bgcolorsrc=None,
          bordercolor=None,
          bordercolorsrc=None,
          font=None,
          namelength=None,
          namelengthsrc=None,
          **kwargs
      ):
          """
          Construct a new Hoverlabel object
          
          Parameters
          ----------
          arg
              dict of properties compatible with this constructor or
              an instance of
              :class:`new_plotly.graph_objs.scatter.Hoverlabel`
          align
              Sets the horizontal alignment of the text content
              within hover label box. Has an effect only if the hover
              label text spans more two or more lines
          alignsrc
              Sets the source reference on Chart Studio Cloud for
              align .
          bgcolor
              Sets the background color of the hover labels for this
              trace
          bgcolorsrc
              Sets the source reference on Chart Studio Cloud for
              bgcolor .
          bordercolor
              Sets the border color of the hover labels for this
              trace.
          bordercolorsrc
              Sets the source reference on Chart Studio Cloud for
              bordercolor .
          font
              Sets the font used in hover labels.
          namelength
              Sets the default length (in number of characters) of
              the trace name in the hover labels for all traces. -1
              shows the whole name regardless of length. 0-3 shows
              the first 0-3 characters, and an integer >3 will show
              the whole name if it is less than that many characters,
              but if it is longer, will truncate to `namelength - 3`
              characters and add an ellipsis.
          namelengthsrc
              Sets the source reference on Chart Studio Cloud for
              namelength .
  
          Returns
          -------
          Hoverlabel
          """
          super(Hoverlabel, self).__init__("hoverlabel")
  
          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.scatter.Hoverlabel 
  constructor must be a dict or 
  an instance of :class:`new_plotly.graph_objs.scatter.Hoverlabel`"""
              )
  
          # 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("align", None)
          _v = align if align is not None else _v
          if _v is not None:
              self["align"] = _v
          _v = arg.pop("alignsrc", None)
          _v = alignsrc if alignsrc is not None else _v
          if _v is not None:
              self["alignsrc"] = _v
          _v = arg.pop("bgcolor", None)
          _v = bgcolor if bgcolor is not None else _v
          if _v is not None:
              self["bgcolor"] = _v
          _v = arg.pop("bgcolorsrc", None)
          _v = bgcolorsrc if bgcolorsrc is not None else _v
          if _v is not None:
              self["bgcolorsrc"] = _v
          _v = arg.pop("bordercolor", None)
          _v = bordercolor if bordercolor is not None else _v
          if _v is not None:
              self["bordercolor"] = _v
          _v = arg.pop("bordercolorsrc", None)
          _v = bordercolorsrc if bordercolorsrc is not None else _v
          if _v is not None:
              self["bordercolorsrc"] = _v
          _v = arg.pop("font", None)
          _v = font if font is not None else _v
          if _v is not None:
              self["font"] = _v
          _v = arg.pop("namelength", None)
          _v = namelength if namelength is not None else _v
          if _v is not None:
              self["namelength"] = _v
          _v = arg.pop("namelengthsrc", None)
          _v = namelengthsrc if namelengthsrc is not None else _v
          if _v is not None:
              self["namelengthsrc"] = _v
  
          # Process unknown kwargs
          # ----------------------
          self._process_kwargs(**dict(arg, **kwargs))
  
          # Reset skip_invalid
          # ------------------
          self._skip_invalid = False
  