Yes, there's a test for the no-PyEphem case. The test suite has a fixture that simulates a machine without PyEphem installed (it removes the ephem module and leaves only the Skyfield almanac registered), and an audit test (TestSkyfieldOnlyAudit) that requires every supported tag to evaluate correctly in that configuration. So the Skyfield engine is proven to answer everything it claims to on its own, not silently via PyEphem.
On which engine is doing the calculations — it's actually a bit stronger than "try Skyfield first, then fall back." Once the extension is registered, Skyfield computes everything it knows how to compute. PyEphem is consulted only in three narrow, by-design cases:
1. Attributes Skyfield doesn't compute at all (direct PyEphem extras like moon.subsolar_lat).
2. Named-star tags when the star catalog is disabled (but you would have to go out of your way to disable it).
3. Dates far enough outside the bundled DE421 ephemeris span (1899–2053) that a search window can't complete.
Ways to see it for yourself:
- Check the startup log. If the extension registered, syslog shows:
Skyfield almanac registered; reports will use Skyfield for almanac computations.
If that line is present, your report tags are coming from Skyfield except for the three cases above.
- The definitive experiment — the same thing the test suite does: pip uninstall ephem in your WeeWX virtual environment and restart. Anything that still evaluates is pure Skyfield. (The handful of PyEphem-only attributes become per-tag errors, not aborted reports, so it's safe to try.)
- Look at the values. The README's "Differences from PyEphem" section lists tags where the two engines measurably disagree (e.g., Jupiter's central meridian longitude differs by ~0.8°, and twilight with a custom horizon is geometric per USNO rather than refracted). If your output matches the documented Skyfield/USNO value, Skyfield computed it.