docs: def illumf(method, target, ilusrc, et, fixref, abcorr, obsrvr, spoint):
      """
      Compute the illumination angles---phase, incidence, and
      emission---at a specified point on a target body. Return logical
      flags indicating whether the surface point is visible from
      the observer's position and whether the surface point is
      illuminated.
  
      The target body's surface is represented using topographic data
      provided by DSK files, or by a reference ellipsoid.
  
      The illumination source is a specified ephemeris object.
      
      https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/illumf_c.html
      
      :param method: Computation method.
      :type method: str
      :param target: Name of target body.
      :type target: str 
      :param ilusrc: Name of illumination source.
      :type ilusrc: str
      :param et: Epoch in ephemeris seconds past J2000.
      :type et: float
      :param fixref: Body-fixed, body-centered target body frame.
      :type fixref: str
      :param abcorr: Desired aberration correction.
      :type abcorr: str
      :param obsrvr: Name of observing body.
      :type obsrvr: str
      :param spoint: Body-fixed coordinates of a target surface point.
      :type spoint: 3-Element Array of floats
      :return: Target surface point epoch, Vector from observer to target
       surface point, Phase angle at the surface point, Source incidence 
       angle at the surface point, Emission angle at the surface point, 
       Visibility flag, Illumination flag
      :rtype: tuple
      """
      method = stypes.stringToCharP(method)
      target = stypes.stringToCharP(target)
      ilusrc = stypes.stringToCharP(ilusrc)
      et     = ctypes.c_double(et)
      fixref = stypes.stringToCharP(fixref)
      abcorr = stypes.stringToCharP(abcorr)
      obsrvr = stypes.stringToCharP(obsrvr)
      spoint = stypes.toDoubleVector(spoint)
      trgepc = ctypes.c_double(0)
      srfvec = stypes.emptyDoubleVector(3)
      phase  = ctypes.c_double(0)
      incdnc = ctypes.c_double(0)
      emissn = ctypes.c_double(0)
      visibl = ctypes.c_int()
      lit    = ctypes.c_int()
      libspice.illumf_c(method, target, ilusrc, et, fixref, abcorr, obsrvr, spoint,
                        ctypes.byref(trgepc), srfvec, ctypes.byref(phase),
                        ctypes.byref(incdnc), ctypes.byref(emissn),
                        ctypes.byref(visibl), ctypes.byref(lit))
      return trgepc.value, stypes.cVectorToPython(srfvec), \
             phase.value, incdnc.value, emissn.value, bool(visibl.value), bool(lit.value)