<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def eci2geodetic(eci: np.ndarray, t: datetime, useastropy: bool = True) -> Tuple[float, float, float]: """ convert ECI to geodetic coordinates Parameters eci : tuple of float [meters] Nx3 target ECI location (x,y,z) t : datetime.datetime, float length N vector of datetime OR greenwich sidereal time angle [radians]. Results ------- lat : float geodetic latitude lon : float geodetic longitude alt : float altitude above ellipsoid (meters) Notes ----- Conversion is idealized: doesn't consider nutations, perterbations, etc. like the IAU-76/FK5 or IAU-2000/2006 model-based conversions from ECI to ECEF eci2geodetic() a.k.a. eci2lla() """

    ecef = np.atleast_2d(eci2ecef(eci, t, useastropy=useastropy))

    return np.asarray(ecef2geodetic(ecef[:, 0], ecef[:, 1], ecef[:, 2])).squeeze()