code: def XYZ_to_Luv(cobj, *args, **kwargs):
      
      temp_x = cobj.xyz_x
      temp_y = cobj.xyz_y
      temp_z = cobj.xyz_z
      denom = temp_x + (15.0 * temp_y) + (3.0 * temp_z)
      # avoid division by zero
      if denom == 0.0:
          luv_u = 0.0
          luv_v = 0.0
      else:
          luv_u = (4.0 * temp_x) / denom
          luv_v = (9.0 * temp_y) / denom
  
      illum = cobj.get_illuminant_xyz()
      temp_y = temp_y / illum["Y"]
      if temp_y > color_constants.CIE_E:
          temp_y = math.pow(temp_y, (1.0 / 3.0))
      else:
          temp_y = (7.787 * temp_y) + (16.0 / 116.0)
  
      ref_U = (4.0 * illum["X"]) / (illum["X"] + (15.0 * illum["Y"]) + (3.0 * illum["Z"]))
      ref_V = (9.0 * illum["Y"]) / (illum["X"] + (15.0 * illum["Y"]) + (3.0 * illum["Z"]))
  
      luv_l = (116.0 * temp_y) - 16.0
      luv_u = 13.0 * luv_l * (luv_u - ref_U)
      luv_v = 13.0 * luv_l * (luv_v - ref_V)
  
      return LuvColor(
          luv_l, luv_u, luv_v, observer=cobj.observer, illuminant=cobj.illuminant)
docs: Convert from XYZ to Luv