Predict the object position at a given MJD.

        The return value is a tuple ``(ra, dec)``, in radians, giving the
        predicted position of the object at *mjd*. Unlike :meth:`predict`, the
        astrometric uncertainties are ignored. This function is therefore
        deterministic but potentially misleading.

        If *complain* is True, print out warnings for incomplete information.

        This function relies on the external :mod:`skyfield` package.

def predict_without_uncertainties(self, mjd, complain=True):
        """Predict the object position at a given MJD.

        The return value is a tuple ``(ra, dec)``, in radians, giving the
        predicted position of the object at *mjd*. Unlike :meth:`predict`, the
        astrometric uncertainties are ignored. This function is therefore
        deterministic but potentially misleading.

        If *complain* is True, print out warnings for incomplete information.

        This function relies on the external :mod:`skyfield` package.

        """
        import sys

        self.verify(complain=complain)

        planets, ts = load_skyfield_data() # might download stuff from the internet
        earth = planets['earth']
        t = ts.tdb(jd = mjd + 2400000.5)

        # "Best" position. The implementation here is a bit weird to keep
        # parallelism with predict().

        args = {
            'ra_hours': self.ra * R2H,
            'dec_degrees': self.dec * R2D,
        }

        if self.pos_epoch is not None:
            args['jd_of_position'] = self.pos_epoch + 2400000.5

        if self.promo_ra is not None:
            args['ra_mas_per_year'] = self.promo_ra
            args['dec_mas_per_year'] = self.promo_dec
        if self.parallax is not None:
            args['parallax_mas'] = self.parallax
        if self.vradial is not None:
            args['radial_km_per_s'] = self.vradial

        bestra, bestdec, _ = earth.at(t).observe(PromoEpochStar(**args)).radec()
        return bestra.radians, bestdec.radians