code: def hsv(self):
          
          (r, g, b) = self.rgb
          maxc = max(r, g, b)
          minc = min(r, g, b)
          v = maxc
  
          if minc == maxc:
              return 0.0, 0.0, v
  
          s = (maxc-minc) / maxc
          rc = (maxc-r) / (maxc-minc)
          gc = (maxc-g) / (maxc-minc)
          bc = (maxc-b) / (maxc-minc)
  
          if r == maxc:
              h = bc-gc
          elif g == maxc:
              h = 2.0+rc-bc
          else:
              h = 4.0+gc-rc
  
          h = (h/6.0) % 1.0
  
          return (h, s, v)
docs: HSV: Hue, Saturation, Value
          H: position in the spectrum
          S: color saturation ("purity")
          V: color brightness