yksa-orbital/yksa_orbital/__init__.py
2026-08-18 22:01:53 +08:00

26 lines
1.2 KiB
Python

"""Propagation for Django services: a backend registry and the Orekit client.
The public surface is :func:`get_backend`. Everything that needs a state vector
asks for a backend by name (or lets ``settings.ORBITAL_PROPAGATOR_BACKEND``
decide) and talks to the :class:`odm.PropagatorBackend` seam, so no call site
knows or cares which propagator answered.
Two backends ship:
``sgp4`` pure Python, no service dependency. TEME plus a GMST Earth-fixed
frame, and analytical theory only -- it has no drag integration, so
it refuses decay work rather than returning a number nobody should
trust.
``orekit`` an HTTP client to the Orekit sidecar (``services/orekit``): rigorous
frames, numerical propagation, drag fitting, decay forecasts and the
solar-activity ensemble.
Reusable on purpose. ODMS and ``track.tmtc.yksa.space`` both propagate, both
against the same sidecar, and the alternative to sharing this app is two HTTP
clients that drift apart on timeouts, on 503 handling, and on what they send.
Add it to ``INSTALLED_APPS`` and set ``OREKIT_SERVICE_URL``.
"""
from .registry import BACKENDS, get_backend, register
__all__ = ["BACKENDS", "get_backend", "register"]