class_docstr: Abstraction of a color object
  
      Color object keeps information of a color. It can input/output to different
      format (HSL, RGB, HEX, WEB) and their partial representation.
  
          >>> from colour import Color, HSL
  
          >>> b = Color()
          >>> b.hsl = HSL.BLUE
  
      Access values
      -------------
  
          >>> b.hue  # doctest: +ELLIPSIS
          0.66...
          >>> b.saturation
          1.0
          >>> b.luminance
          0.5
  
          >>> b.red
          0.0
          >>> b.blue
          1.0
          >>> b.green
          0.0
  
          >>> b.rgb
          (0.0, 0.0, 1.0)
          >>> b.hsl  # doctest: +ELLIPSIS
          (0.66..., 1.0, 0.5)
          >>> b.hex
          '#00f'
  
      Change values
      -------------
  
      Let's change Hue toward red tint:
  
          >>> b.hue = 0.0
          >>> b.hex
          '#f00'
  
          >>> b.hue = 2.0/3
          >>> b.hex
          '#00f'
  
      In the other way round:
  
          >>> b.hex = '#f00'
          >>> b.hsl
          (0.0, 1.0, 0.5)
  
      Long hex can be accessed directly:
  
          >>> b.hex_l = '#123456'
          >>> b.hex_l
          '#123456'
          >>> b.hex
          '#123456'
  
          >>> b.hex_l = '#ff0000'
          >>> b.hex_l
          '#ff0000'
          >>> b.hex
          '#f00'
  
      Convenience
      -----------
  
          >>> c = Color('blue')
          >>> c
          <Color blue>
          >>> c.hue = 0
          >>> c
          <Color red>
  
          >>> c.saturation = 0.0
          >>> c.hsl  # doctest: +ELLIPSIS
          (..., 0.0, 0.5)
          >>> c.rgb
          (0.5, 0.5, 0.5)
          >>> c.hex
          '#7f7f7f'
          >>> c
          <Color #7f7f7f>
  
          >>> c.luminance = 0.0
          >>> c
          <Color black>
  
          >>> c.hex
          '#000'
  
          >>> c.green = 1.0
          >>> c.blue = 1.0
          >>> c.hex
          '#0ff'
          >>> c
          <Color cyan>
  
          >>> c = Color('blue', luminance=0.75)
          >>> c
          <Color #7f7fff>
  
          >>> c = Color('red', red=0.5)
          >>> c
          <Color #7f0000>
  
          >>> print(c)
          #7f0000
  
      You can try to query unexisting attributes:
  
          >>> c.lightness  # doctest: +ELLIPSIS
          Traceback (most recent call last):
          ...
          AttributeError: 'lightness' not found
  
      TODO: could add HSV, CMYK, YUV conversion.
  
  #     >>> b.hsv
  #     >>> b.value
  #     >>> b.cyan
  #     >>> b.magenta
  #     >>> b.yellow
  #     >>> b.key
  #     >>> b.cmyk
  
  
      Recursive init
      --------------
  
      To support blind conversion of web strings (or already converted object),
      the Color object supports instantiation with another Color object.
  
          >>> Color(Color(Color('red')))
          <Color red>
  
      Equality support
      ----------------
  
      Default equality is RGB hex comparison:
  
          >>> Color('red') == Color('blue')
          False
          >>> Color('red') == Color('red')
          True
          >>> Color('red') != Color('blue')
          True
          >>> Color('red') != Color('red')
          False
  
      But this can be changed:
  
          >>> saturation_equality = lambda c1, c2: c1.luminance == c2.luminance
          >>> Color('red', equality=saturation_equality) == Color('blue')
          True
  
  
      Subclassing support
      -------------------
  
      You should be able to subclass ``Color`` object without any issues::
  
          >>> class Tint(Color):
          ...     pass
  
      And keep the internal API working::
  
          >>> Tint("red").hsl
          (0.0, 1.0, 0.5)
code: def get_hue(self):
      return self.hsl[0]
  
imports: from __future__ import with_statement, print_function
  import hashlib
  import re
  import sys
label_desc: Use image node_id 8 for calling the Color obj's underlying member method code with example usage: obj.get_hue() and returns: self