text: from plotly.basedatatypes import BaseTraceHierarchyType
  import copy
  
  
  class Line(BaseTraceHierarchyType):
  
      # color
      # -----
      @property
      def color(self):
          """
          Sets the line color.
      
          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
  
      # dash
      # ----
      @property
      def dash(self):
          """
          Sets the dash style of lines. Set to a dash type string
          ("solid", "dot", "dash", "longdash", "dashdot", or
          "longdashdot") or a dash length list in px (eg
          "5px,10px,2px,2px").
      
          The 'dash' property is an enumeration that may be specified as:
            - One of the following dash styles:
                  ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot']
            - A string containing a dash length list in pixels or percentages
                  (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.)
  
          Returns
          -------
          str
          """
          return self['dash']
  
      @dash.setter
      def dash(self, val):
          self['dash'] = val
  
      # width
      # -----
      @property
      def width(self):
          """
          Sets the line width (in px).
      
          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 'ohlc.decreasing'
  
      # Self properties description
      # ---------------------------
      @property
      def _prop_descriptions(self):
          return """\
          color
              Sets the line color.
          dash
              Sets the dash style of lines. Set to a dash type string
              ("solid", "dot", "dash", "longdash", "dashdot", or
              "longdashdot") or a dash length list in px (eg
              "5px,10px,2px,2px").
          width
              Sets the line width (in px).
          """
  
      def __init__(self, arg=None, color=None, dash=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.ohlc.decreasing.Line
          color
              Sets the line color.
          dash
              Sets the dash style of lines. Set to a dash type string
              ("solid", "dot", "dash", "longdash", "dashdot", or
              "longdashdot") or a dash length list in px (eg
              "5px,10px,2px,2px").
          width
              Sets the line width (in px).
  
          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.ohlc.decreasing.Line 
  constructor must be a dict or 
  an instance of plotly.graph_objs.ohlc.decreasing.Line"""
              )
  
          # Handle skip_invalid
          # -------------------
          self._skip_invalid = kwargs.pop('skip_invalid', False)
  
          # Import validators
          # -----------------
          from plotly.validators.ohlc.decreasing import (line as v_line)
  
          # Initialize validators
          # ---------------------
          self._validators['color'] = v_line.ColorValidator()
          self._validators['dash'] = v_line.DashValidator()
          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('dash', None)
          self['dash'] = dash if dash 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
  