text: from plotly.basedatatypes import BaseTraceHierarchyType
  import copy
  
  
  class Line(BaseTraceHierarchyType):
  
      # color
      # -----
      @property
      def color(self):
          """
          Sets themarker.linecolor. It accepts either a specific color or
          an array of numbers that are mapped to the colorscale relative
          to the max and min values of the array or relative to
          `marker.line.cmin` and `marker.line.cmax` if set.
      
          The 'color' 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, 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
  
          Returns
          -------
          str
          """
          return self['color']
  
      @color.setter
      def color(self, val):
          self['color'] = val
  
      # outliercolor
      # ------------
      @property
      def outliercolor(self):
          """
          Sets the border line color of the outlier sample points.
          Defaults to marker.color
      
          The 'outliercolor' 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, 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
  
          Returns
          -------
          str
          """
          return self['outliercolor']
  
      @outliercolor.setter
      def outliercolor(self, val):
          self['outliercolor'] = val
  
      # outlierwidth
      # ------------
      @property
      def outlierwidth(self):
          """
          Sets the border line width (in px) of the outlier sample
          points.
      
          The 'outlierwidth' property is a number and may be specified as:
            - An int or float in the interval [0, inf]
  
          Returns
          -------
          int|float
          """
          return self['outlierwidth']
  
      @outlierwidth.setter
      def outlierwidth(self, val):
          self['outlierwidth'] = val
  
      # width
      # -----
      @property
      def width(self):
          """
          Sets the width (in px) of the lines bounding the marker points.
      
          The 'width' property is a number and may be specified as:
            - An int or float in the interval [0, inf]
  
          Returns
          -------
          int|float
          """
          return self['width']
  
      @width.setter
      def width(self, val):
          self['width'] = val
  
      # property parent name
      # --------------------
      @property
      def _parent_path_str(self):
          return 'box.marker'
  
      # Self properties description
      # ---------------------------
      @property
      def _prop_descriptions(self):
          return """\
          color
              Sets themarker.linecolor. It accepts either a specific
              color or an array of numbers that are mapped to the
              colorscale relative to the max and min values of the
              array or relative to `marker.line.cmin` and
              `marker.line.cmax` if set.
          outliercolor
              Sets the border line color of the outlier sample
              points. Defaults to marker.color
          outlierwidth
              Sets the border line width (in px) of the outlier
              sample points.
          width
              Sets the width (in px) of the lines bounding the marker
              points.
          """
  
      def __init__(
          self,
          arg=None,
          color=None,
          outliercolor=None,
          outlierwidth=None,
          width=None,
          **kwargs
      ):
          """
          Construct a new Line object
          
          Parameters
          ----------
          arg
              dict of properties compatible with this constructor or
              an instance of plotly.graph_objs.box.marker.Line
          color
              Sets themarker.linecolor. It accepts either a specific
              color or an array of numbers that are mapped to the
              colorscale relative to the max and min values of the
              array or relative to `marker.line.cmin` and
              `marker.line.cmax` if set.
          outliercolor
              Sets the border line color of the outlier sample
              points. Defaults to marker.color
          outlierwidth
              Sets the border line width (in px) of the outlier
              sample points.
          width
              Sets the width (in px) of the lines bounding the marker
              points.
  
          Returns
          -------
          Line
          """
          super(Line, self).__init__('line')
  
          # 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.box.marker.Line 
  constructor must be a dict or 
  an instance of plotly.graph_objs.box.marker.Line"""
              )
  
          # Handle skip_invalid
          # -------------------
          self._skip_invalid = kwargs.pop('skip_invalid', False)
  
          # Import validators
          # -----------------
          from plotly.validators.box.marker import (line as v_line)
  
          # Initialize validators
          # ---------------------
          self._validators['color'] = v_line.ColorValidator()
          self._validators['outliercolor'] = v_line.OutliercolorValidator()
          self._validators['outlierwidth'] = v_line.OutlierwidthValidator()
          self._validators['width'] = v_line.WidthValidator()
  
          # Populate data dict with properties
          # ----------------------------------
          _v = arg.pop('color', None)
          self['color'] = color if color is not None else _v
          _v = arg.pop('outliercolor', None)
          self['outliercolor'] = outliercolor if outliercolor is not None else _v
          _v = arg.pop('outlierwidth', None)
          self['outlierwidth'] = outlierwidth if outlierwidth is not None else _v
          _v = arg.pop('width', None)
          self['width'] = width if width is not None else _v
  
          # Process unknown kwargs
          # ----------------------
          self._process_kwargs(**dict(arg, **kwargs))
  
          # Reset skip_invalid
          # ------------------
          self._skip_invalid = False
  