Supported versions¶
The CI matrix below is the authoritative supported set. gmat-sweep
runs on every cell on every PR, with both unit and integration suites enabled.
CI matrix¶
| Axis | Versions |
|---|---|
| GMAT | R2025a, R2026a (R2026a is the primary development target) |
| Python | 3.10, 3.11, 3.12 |
| Operating system | Ubuntu (ubuntu-latest), Windows (windows-latest), macOS (macos-latest) |
That gives 2 × 3 × 3 = 18 cells covered on every PR.
Notes per axis¶
GMAT¶
GMAT installs are provisioned in CI via
astro-tools/setup-gmat. Locally,
download a build from the
GMAT SourceForge release page;
gmat-run's install guide
walks through unpacking and pointing Python at it.
Older GMAT releases (R2022a and earlier) are not in the matrix. The GMAT project skipped public R2023a and R2024a releases, so R2025a and R2026a are the only releases supported.
Python¶
3.10 is the floor (requires-python = ">=3.10" in pyproject.toml). 3.13
is not in the matrix; it will be added once pyarrow and joblib's loky
backend ship stable wheels for it.
Operating system¶
macos-latest is Apple Silicon (arm64); R2025a and R2026a both ship
arm64-compatible gmatpy bindings, so both versions run natively on the
runner. GMAT installs are provisioned by setup-gmat on macOS the same way
they are on Linux and Windows.
Runtime dependencies¶
gmat-sweep does not ship GMAT. It depends at runtime on:
- A working GMAT install discoverable on the host (see the getting-started page).
gmat-run≥ 0.3 — the single-run primitive every worker calls into. Installed as a transitive dependency from PyPI.
gmat-run is in turn responsible for finding, importing, and bootstrapping
gmatpy. gmat-sweep itself never imports gmatpy directly — the import
happens inside each worker subprocess on first call. See the
FAQ for why.
Beyond the support matrix¶
If your environment is outside the supported matrix, the package may still
work — it is pure Python and the only platform-specific bits are inherited
from gmat-run and the GMAT install itself. Just do not expect CI to catch
regressions for you.