docs: def geodetic2enu(lat: float, lon: float, h: float,
                   lat0: float, lon0: float, h0: float,
                   ell=None, deg: bool = True) -> Tuple[float, float, float]:
      """
      Parameters
      ----------
      lat : float or np.ndarray of float
            target geodetic latitude
      lon : float or np.ndarray of float
            target geodetic longitude
      h : float or np.ndarray of float
            target altitude above ellipsoid  (meters)
      lat0 : float
             Observer geodetic latitude
      lon0 : float
             Observer geodetic longitude
      h0 : float
           observer altitude above geodetic ellipsoid (meters)
      ell : Ellipsoid, optional
            reference ellipsoid
      deg : bool, optional
            degrees input/output  (False: radians in/out)
  
  
      Results
      -------
      e : float or np.ndarray of float
          East ENU
      n : float or np.ndarray of float
          North ENU
      u : float or np.ndarray of float
          Up ENU
      """
      x1, y1, z1 = geodetic2ecef(lat, lon, h, ell, deg=deg)
      x2, y2, z2 = geodetic2ecef(lat0, lon0, h0, ell, deg=deg)
      dx = x1 - x2
      dy = y1 - y2
      dz = z1 - z2
  
      return uvw2enu(dx, dy, dz, lat0, lon0, deg=deg)