Skip to main content

Parse, format, lint, and edit GMAT mission scripts from Python — a tree-sitter grammar and tooling.

Project description

gmat-script

Parse, format, lint, and edit GMAT .script mission files from Python — built on a tree-sitter grammar. The whole stack operates on script text; nothing here requires a GMAT install.

Today it ships the parser and the gmat-script parse command-line tool. The typed AST and mutation API, the canonical formatter, the linter, and the editor tooling build on top of the same tree as they land.

Install

pip install gmat-script

gmat-script supports Python 3.10, 3.11, and 3.12. The wheel bundles a precompiled grammar, so the install needs no C or Node toolchain — and never GMAT.

Quick start

from gmat_script import parse

tree = parse("Create Spacecraft Sat\nSat.SMA = 7000\n")

tree.has_errors      # False — the script is well-formed
tree.to_source()     # round-trips byte-for-byte to the input

parse never raises on malformed input: it returns a tree carrying ERROR / MISSING nodes localised to the broken construct, surfaced through tree.errors. The same engine drives the CLI, a fast, install-free syntax gate for CI:

$ gmat-script parse mission.script        # prints the syntax tree; exits non-zero on a syntax error
$ gmat-script parse --json mission.script  # machine-readable {file, ok, errors} report

The grammar surface

The tree-sitter grammar parses GMAT scripts (.script) and GmatFunctions (.gmf) — the same grammar for both — and re-emits any input byte-for-byte, comments and layout included. It is a deliberately permissive superset: Create <Type> <name> accepts any resource type and unknown command keywords parse as generic command nodes, so a new resource or command never needs a grammar change. The acceptance bar is concrete: every one of the 162 .script and 9 .gmf files shipped with NASA GMAT R2026a parses with zero errors and round-trips exactly.

See the grammar surface reference for the node taxonomy and the covered / deferred constructs.

The GMAT-free guarantee

Reading, checking, formatting, and transforming a script needs only this package — never a GMAT install. pip install gmat-script never pulls in, requires, or looks for GMAT or gmatpy; the only runtime dependency is tree-sitter. (GMAT is used at build time only, to generate the field catalogue that later semantic tooling will check against.)

GMAT version

The grammar targets GMAT R2026a. Because it never enumerates resource types or command keywords, parsing is effectively version-independent — scripts from other releases parse too. Semantics that do vary by release (valid field names, enums, defaults) belong to the later linter and are scoped to R2026a.

What gmat-script is not

  • Not a propagator or astrodynamics engine. It reads and transforms script text; it computes no orbits and models no physics.
  • Not a mission runner. Running a script is GMAT's job — gmat-script does no execution.
  • Not an engine-dependent validator. "Does it parse" is a structural question answered here; "does it run / converge" is a different question that needs GMAT.

Documentation

Full documentation — getting started, the grammar surface, the parse CLI, the error-reporting model, and the API reference — is at astro-tools.github.io/gmat-script.

License

MIT — part of the astro-tools organization.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gmat_script-0.1.1.tar.gz (320.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

gmat_script-0.1.1-cp310-abi3-win_amd64.whl (27.2 kB view details)

Uploaded CPython 3.10+Windows x86-64

gmat_script-0.1.1-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (38.0 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

gmat_script-0.1.1-cp310-abi3-macosx_11_0_arm64.whl (25.0 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

gmat_script-0.1.1-cp310-abi3-macosx_10_9_x86_64.whl (24.1 kB view details)

Uploaded CPython 3.10+macOS 10.9+ x86-64

File details

Details for the file gmat_script-0.1.1.tar.gz.

File metadata

  • Download URL: gmat_script-0.1.1.tar.gz
  • Upload date:
  • Size: 320.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gmat_script-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9028577e7a0881e13173e9bb619367325cb7e9f3008132907eff83b5cb7d6100
MD5 e89d1f9419826d602aa2a9669391d051
BLAKE2b-256 5975d407a506767d0b7ae53eb49da17b8b421cd464fa45e3fc3846dac2786269

See more details on using hashes here.

Provenance

The following attestation bundles were made for gmat_script-0.1.1.tar.gz:

Publisher: release.yml on astro-tools/gmat-script

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gmat_script-0.1.1-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: gmat_script-0.1.1-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 27.2 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gmat_script-0.1.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 93e4f7e0adb0e9f31286c5a2d293d1b086745522099356dd3714e0c0f591eb64
MD5 35117b1075c2a8ff7907ebe3ec2a3eda
BLAKE2b-256 654c2a7a440bdfb6c609139c3be3e3e89b8cca5b4da09e7392b2f4d2398337ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for gmat_script-0.1.1-cp310-abi3-win_amd64.whl:

Publisher: release.yml on astro-tools/gmat-script

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gmat_script-0.1.1-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for gmat_script-0.1.1-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 232db3bf3cb429d31ecc97b80348610e7e1af23144e2c93f97daf260aeb8685a
MD5 eeef71c896b021197bcfed4c9732e28d
BLAKE2b-256 924863206b754f7dc4428933d470abf3fe1af7c637f79cea43833762be338894

See more details on using hashes here.

Provenance

The following attestation bundles were made for gmat_script-0.1.1-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on astro-tools/gmat-script

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gmat_script-0.1.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gmat_script-0.1.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 877e1f3a37ebd072eb821ff1a489caa97575f265c044d4ec6bc6d13ccbb97d23
MD5 219736bab1c71ec6faa3270fe798bf5e
BLAKE2b-256 7f08ec98c68f7508e5563abf79b52eff60d688fe3f65436720209412d1558d96

See more details on using hashes here.

Provenance

The following attestation bundles were made for gmat_script-0.1.1-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on astro-tools/gmat-script

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gmat_script-0.1.1-cp310-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for gmat_script-0.1.1-cp310-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f48255072d60d3532a0276958f53c67d1e04932266bd4854e60d089c1d97f42f
MD5 866b1c42f8c1eaedea5f48ad424ecf52
BLAKE2b-256 1db53cf0674eb1d218d83609a621f711f1a0d965bccb2774b7b13971257d77e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for gmat_script-0.1.1-cp310-abi3-macosx_10_9_x86_64.whl:

Publisher: release.yml on astro-tools/gmat-script

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page