Skip to content

Commit 9ab31cc

Browse files
authored
Cut v0.6.0: version bump, CHANGELOG, docs review pass (#152)
- Bump the version to 0.6.0 across pyproject.toml, the package __init__, the smoke test, uv.lock, and CITATION.cff. - Add the CHANGELOG [0.6.0] section, aggregated from the 10 PRs merged since v0.5.0, plus the [0.6.0] compare link. - Docs review pass: enumerate the new multi-segment mixed-TIME_SYSTEM rejection in known-limitations.md. Closes #133 Signed-off-by: Dimitrije Jankovic <djankov@gmail.com>
1 parent 7a9e78d commit 9ab31cc

7 files changed

Lines changed: 62 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,55 @@ All notable changes to gmat-run are documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.6.0] — 2026-05-22
9+
10+
### Added
11+
12+
- `CITATION.cff` — Citation File Format 1.2.0 metadata at the repository
13+
root, so GitHub renders the "Cite this repository" sidebar and the
14+
academic citation path has one canonical source. A `citation` CI job
15+
validates the file with `cffconvert` on every PR (#130, #134).
16+
17+
### Changed
18+
19+
- Parser file-read failures are now typed. All six text parsers —
20+
`reportfile`, `ephemeris`, `stk_ephemeris`, `aem_ephemeris`, `contact`,
21+
and `solver_log` — route through a shared UTF-8 reader that wraps
22+
`OSError` and `UnicodeDecodeError` as
23+
[`GmatOutputParseError`][gmat_run.GmatOutputParseError]. A missing or
24+
binary input — including a declared `ReportFile` or `EphemerisFile` that
25+
GMAT never wrote — now surfaces the typed error on lazy `Results` access
26+
instead of a raw `FileNotFoundError` or `UnicodeDecodeError` (#138, #146).
27+
28+
### Fixed
29+
30+
- `*ModJulian` epoch columns are now always `datetime64[ns]`. Under
31+
pandas 3.x a ModJulian column of whole-day or integer-typed values
32+
resolved to `datetime64[us]`, leaving the column dtype data-dependent and
33+
in breach of the documented epoch-column contract (#136, #144).
34+
- The STK and AEM ephemeris format sniffers no longer leak
35+
`UnicodeDecodeError` on a binary or non-UTF-8 file (for example a GMAT
36+
Code-500 binary ephemeris). Such a file now sniffs as "not this format"
37+
and format dispatch continues instead of raising (#137, #145).
38+
- Multi-segment OEM and AEM ephemeris files whose segments declare
39+
conflicting `TIME_SYSTEM` values are now rejected with
40+
`GmatOutputParseError`. Previously they parsed silently into a single
41+
epoch column mixing time scales, which a later `convert_to=` then
42+
mistranslated (#139, #147).
43+
- `ReportFile` parsing coerces columns positionally, so a report carrying
44+
duplicate header column names — which GMAT's `Report` command can emit —
45+
has every column typed and every epoch column promoted, instead of
46+
leaving the repeated columns string-typed. A `UserWarning` names the
47+
duplicate (#140, #148).
48+
- `RMATRIX`-typed field writes (for example `Sat.Covariance`) now go
49+
through gmatpy's `SetMatrix`, which the engine accepts. They previously
50+
used `SetField`, which has no matrix overload and rejected the nested
51+
list (#141, #149).
52+
- [`Results.converged`][gmat_run.Results] no longer aborts when a single
53+
solver's log is unparseable. An unreadable log is omitted from the
54+
returned mapping and named in a `UserWarning`, rather than hiding the
55+
convergence status of every other solver (#143, #151).
56+
857
## [0.5.0] — 2026-05-20
958

1059
### Added
@@ -207,6 +256,7 @@ Initial public release.
207256
- Release workflow: build, PyPI trusted publishing, and
208257
`gh release create --generate-notes` on `v*` tags (#31).
209258

259+
[0.6.0]: https://github.com/astro-tools/gmat-run/compare/v0.5.0...v0.6.0
210260
[0.5.0]: https://github.com/astro-tools/gmat-run/compare/v0.4.0...v0.5.0
211261
[0.4.0]: https://github.com/astro-tools/gmat-run/compare/v0.3.0...v0.4.0
212262
[0.3.0]: https://github.com/astro-tools/gmat-run/compare/v0.2.0...v0.3.0

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ type: software
1212
authors:
1313
- given-names: Dimitrije
1414
family-names: Jankovic
15-
version: 0.5.0
16-
date-released: "2026-05-20"
15+
version: 0.6.0
16+
date-released: "2026-05-22"
1717
license: MIT
1818
repository-code: "https://github.com/astro-tools/gmat-run"
1919
url: "https://github.com/astro-tools/gmat-run"

docs/known-limitations.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,16 +117,18 @@ GMAT actually emits; uncommon variants raise
117117

118118
- **CCSDS-OEM ephemeris**: covariance blocks (`COVARIANCE_START`
119119
`COVARIANCE_STOP`) are skipped; acceleration columns past the mandatory six
120-
state components are rejected.
120+
state components are rejected. A multi-segment file whose segments declare
121+
conflicting `TIME_SYSTEM` values is rejected, since the concatenated epoch
122+
column would mix time scales.
121123
- **STK-TimePosVel ephemeris**: the `EphemerisTimePosVelAcc` (with
122124
acceleration) and `EphemerisTimePos` (position-only) data-section variants
123125
are rejected.
124126
- **CCSDS-AEM attitude**: only `QUATERNION` and `EULER_ANGLE` segment types
125127
parse. Rate/derivative/spin variants
126128
(`QUATERNION/DERIVATIVE`, `QUATERNION/RATE`, `EULER_ANGLE/RATE`, `SPIN`,
127-
`SPIN/NUTATION`) are rejected, and multi-segment files mixing different
128-
`ATTITUDE_TYPE` values are rejected (the column shapes are not
129-
concatenable).
129+
`SPIN/NUTATION`) are rejected. Multi-segment files are rejected when their
130+
segments mix different `ATTITUDE_TYPE` values (the column shapes are not
131+
concatenable) or conflicting `TIME_SYSTEM` values.
130132
- **SPK ephemeris**: the parser assumes one spacecraft per file (which
131133
matches GMAT's writer behaviour). Multi-target SPKs are rejected.
132134
- **Code-500 binary ephemeris**: not implemented. No public tooling decodes

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "gmat-run"
7-
version = "0.5.0"
7+
version = "0.6.0"
88
description = "Run GMAT mission scripts from Python and get results as pandas DataFrames."
99
readme = "README.md"
1010
requires-python = ">=3.10"

src/gmat_run/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from gmat_run.runtime import bootstrap
1515
from gmat_run.summary import CommandOutline, MissionSummary, ResourceGroup
1616

17-
__version__ = "0.5.0"
17+
__version__ = "0.6.0"
1818

1919
__all__ = [
2020
"CommandOutline",

tests/test_smoke.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44

55

66
def test_import() -> None:
7-
assert gmat_run.__version__ == "0.5.0"
7+
assert gmat_run.__version__ == "0.6.0"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)